broke parser into separate files and handled interrupt exception