separate datatype for parser unnecessary -- it's just a StateT !  although, how to have more than one state at once is still a mystery