Parser refactor w/ initial passing tests