restructures program completely, added cabal information