I started to write this mail saying that we could use spellings like nonlocal.scoped, nonlocal.own, nonlocal.global and nonlocal.const but then read the message about declarations in the middle of a function having side effects at definition time. That seems like a big problem. And it made me realize it would be weird if (to use one possible bikeshed color): own x = y was not the same as own x x = y but I don't see how these can possibly be the same. You need the first case to do one time initialization and you must be able to change the value as in the second case or the feature is useless. I proposed a special decorator-like syntax ($inject) which would pull the declaration out of the function entirely (putting it at the scope where it evaluates). There wasn't much discussion other than that it wasn't feasible with current implementation. --- Bruce