Regarding the (1) functionality, I really think we need standard behavior and messaging for looking up variables (right now it's ad-hoc).  I'll make a separate function and use it here, and then use it wherever it doesn't change behavior.