first attempt at recursive parsing, probably start over