ocaml is good for abstractions! functor functor functor
abstraction
functor