turn the let scoping transformer into a class because it's quite complicated and the logic needs to be WAY more organised