smart constructors for haskell types