Add either to cabal file
Change to a command based interface
Add new fields and use TH
Massive refactoring