Made optimization its own module.
Added tuple constructs into the translation and hoisting