refactoring parsing into discrete modules