Much more extensive use of StateT for parsing