first crack at the parser