I completely reworked the parser