split code into submodules
add Cabal file