Reworked - done - recursive parser