refactored parser.js