Update and fix cabal file
Document the NM module
Re-organize, add more opaque newtypes