Moved the lexer into monad territory :)