Could still use some more variables. :P
Also, there's no value in looking things up in _G instead of just using them directly, eg. this:
Code:
_G["PlayerFrame"]:DoSomething()
...costs a global lookup
and a table lookup, so it's actually slower than this:
Code:
PlayerFrame:DoSomething()
...which only costs a global lookup.
The only reason to look something up in _G is if it's dynamically constructed, eg.
Code:
for i = 1, 4 do
_G["PartyFrame"..i]:DoSomething()
end
...where the exact object name is not "known" ahead of time.