first pass at this thing called grammar