Refactored so that compiler uses command pattern to step through compiler stages