refactor ParseMonad; using mtl now