WIP first attempt at an abstraction for parser