in theory this should work for ocaml