refactoring Parser