Stab at a parser
Better error handling