Full refactor Parser