merging in gaby's code for control flow, type inference, untypes assignment, and booleans