first pass at full parser; working on tests