2 and 3 for ocaml
improve 2nd