Huge Patch. Parser is completely new, added constructors and pattern matching.