introduced ParseException, refactored Parser