introduced a parser interface