decuple ParserContext from implementation