Draft refactor of define-var etc, fixing scope bug.