finished parser( needs testing )