As per usual infinite amounts of refactoring and clean ups, but this time also
- Add "Extract variable" refactoring - can be improved but is a first step
It might be worth noting here that, as all extracts, they are unaware of the actual source text you extract. There is just a basic structural check so that you don't extract across block structures, or have jumps in or out of the region (unless you are extracting a macro, in which case this is "fine").