diff --git a/Lib/compiler/consts.py b/Lib/compiler/consts.py
index ae3d18d..c4a4868 100644
--- a/Lib/compiler/consts.py
+++ b/Lib/compiler/consts.py
@@ -1,6 +1,5 @@
-# code flags
-CO_VARARGS = 1
-CO_VARKEYWORDS = 2
+from new import * # import all the CO_xxx flags
+del classobj, code, function, instance, instancemethod, module
 
 # operation flags
 OP_ASSIGN = 'OP_ASSIGN'
diff --git a/Lib/compiler/pyassem.py b/Lib/compiler/pyassem.py
index dc01656..c3fa7b7 100644
--- a/Lib/compiler/pyassem.py
+++ b/Lib/compiler/pyassem.py
@@ -7,6 +7,8 @@
 import types
 
 from compiler import misc
+from compiler.consts import CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, \
+     CO_VARKEYWORDS
 
 def xxx_sort(l):
     l = l[:]
@@ -311,11 +313,6 @@
         return contained
 
 # flags for code objects
-CO_OPTIMIZED = 0x0001
-CO_NEWLOCALS = 0x0002
-CO_VARARGS = 0x0004
-CO_VARKEYWORDS = 0x0008
-CO_NESTED = 0x0010
 
 # the FlowGraph is transformed in place; it exists in one of these states
 RAW = "RAW"
@@ -503,7 +500,8 @@
         return self._lookupName(arg, self.names)
 
     def _convert_NAME(self, arg):
-        self._lookupName(arg, self.varnames)
+        if self.klass is None:
+            self._lookupName(arg, self.varnames)
         return self._lookupName(arg, self.names)
     _convert_STORE_NAME = _convert_NAME
     _convert_DELETE_NAME = _convert_NAME
@@ -739,9 +737,8 @@
         'DELETE_SUBSCR': -2,
         # PRINT_EXPR?
         'PRINT_ITEM': -1,
-        'LOAD_LOCALS': 1,
         'RETURN_VALUE': -1,
-        'EXEC_STMT': -2,
+        'EXEC_STMT': -3,
         'BUILD_CLASS': -2,
         'STORE_NAME': -1,
         'STORE_ATTR': -2,
@@ -756,6 +753,7 @@
         # close enough...
         'SETUP_EXCEPT': 3,
         'SETUP_FINALLY': 3,
+        'FOR_ITER': 1,
         }
     # use pattern match
     patterns = [
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py
index 7a089f0..4f7603d 100644
--- a/Lib/compiler/pycodegen.py
+++ b/Lib/compiler/pycodegen.py
@@ -11,8 +11,9 @@
 from compiler import ast, parse, walk
 from compiler import pyassem, misc, future, symbols
 from compiler.consts import SC_LOCAL, SC_GLOBAL, SC_FREE, SC_CELL
-from compiler.pyassem import CO_VARARGS, CO_VARKEYWORDS, CO_NEWLOCALS,\
-     CO_NESTED, TupleArg
+from compiler.consts import CO_VARARGS, CO_VARKEYWORDS, CO_NEWLOCALS,\
+     CO_NESTED, CO_GENERATOR
+from compiler.pyassem import TupleArg
 
 # Do we have Python 1.x or Python 2.x?
 try:
@@ -495,10 +496,10 @@
         anchor = self.newBlock()
 
         self.visit(node.list)
-        self.visit(ast.Const(0))
+        self.emit('GET_ITER')
         self.nextBlock(start)
         self.emit('SET_LINENO', node.lineno)
-        self.emit('FOR_LOOP', anchor)
+        self.emit('FOR_ITER', anchor)
         self.nextBlock()
         self.visit(node.assign)
         return start, anchor
@@ -1199,6 +1200,8 @@
         self.__super_init(func, filename, scopes, isLambda, class_name)
         self.graph.setFreeVars(self.scope.get_free_vars())
         self.graph.setCellVars(self.scope.get_cell_vars())
+        if self.scope.generator is not None:
+            self.graph.setFlag(CO_GENERATOR)
 ##        self.graph.setFlag(CO_NESTED)
 
 class AbstractClassCode:
