Adding initial implementation, tests, and cabal info