Start implementing the Haskell port