What's the OCaml way to do multiple interfaces?