Updating the cabal file
Adding documentation and fleshing out more types
Adding in doc strings