functor: it's a warm fuzzy thing.
ocaml