make parser definition MUCH more compact (it may be possible to eliminate the class and just have a function - but this is pretty good)