split out parser into separate project