revised parser.rb