attempt to make a more flexible grammar, but discovered my lack of grammar-fu to keep it *tight*