first pass at parsing