greatly refactoring much of the emitter code. Also adding functionality for lift statements