working on a better parser