working with ocaml data types