add abstract base class to make modifications to the interface easier (and easier to add more parsers)