Reformat
Add cabal file
Switch most function to use uniplate