diff --git a/Lib/compiler/pyassem.py b/Lib/compiler/pyassem.py
index 447a8e7..15e91f4 100644
--- a/Lib/compiler/pyassem.py
+++ b/Lib/compiler/pyassem.py
@@ -495,7 +495,7 @@
     def __repr__(self):
         return "TupleArg(%s, %s)" % (self.count, self.names)
     def getName(self):
-        return ".nested%d" % self.count
+        return ".%d" % self.count
 
 def getArgCount(args):
     argcount = len(args)
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py
index c0bbed3..691232f 100644
--- a/Lib/compiler/pycodegen.py
+++ b/Lib/compiler/pycodegen.py
@@ -1101,11 +1101,10 @@
         self.emit('RETURN_VALUE')
 
     def generateArgUnpack(self, args):
-        count = 0
-        for arg in args:
+        for i in range(len(args)):
+            arg = args[i]
             if type(arg) == types.TupleType:
-                self.emit('LOAD_FAST', '.nested%d' % count)
-                count = count + 1
+                self.emit('LOAD_FAST', '.%d' % (i * 2))
                 self.unpackSequence(arg)
                         
     def unpackSequence(self, tup):
@@ -1184,13 +1183,14 @@
     args = []
     extra = []
     count = 0
-    for elt in arglist:
+    for i in range(len(arglist)):
+        elt = arglist[i]
         if type(elt) == types.StringType:
             args.append(elt)
         elif type(elt) == types.TupleType:
-            args.append(TupleArg(count, elt))
-            count = count + 1
+            args.append(TupleArg(i * 2, elt))
             extra.extend(misc.flatten(elt))
+            count = count + 1
         else:
             raise ValueError, "unexpect argument type:", elt
     return args + extra, count
diff --git a/Tools/compiler/compiler/pyassem.py b/Tools/compiler/compiler/pyassem.py
index 447a8e7..15e91f4 100644
--- a/Tools/compiler/compiler/pyassem.py
+++ b/Tools/compiler/compiler/pyassem.py
@@ -495,7 +495,7 @@
     def __repr__(self):
         return "TupleArg(%s, %s)" % (self.count, self.names)
     def getName(self):
-        return ".nested%d" % self.count
+        return ".%d" % self.count
 
 def getArgCount(args):
     argcount = len(args)
diff --git a/Tools/compiler/compiler/pycodegen.py b/Tools/compiler/compiler/pycodegen.py
index c0bbed3..691232f 100644
--- a/Tools/compiler/compiler/pycodegen.py
+++ b/Tools/compiler/compiler/pycodegen.py
@@ -1101,11 +1101,10 @@
         self.emit('RETURN_VALUE')
 
     def generateArgUnpack(self, args):
-        count = 0
-        for arg in args:
+        for i in range(len(args)):
+            arg = args[i]
             if type(arg) == types.TupleType:
-                self.emit('LOAD_FAST', '.nested%d' % count)
-                count = count + 1
+                self.emit('LOAD_FAST', '.%d' % (i * 2))
                 self.unpackSequence(arg)
                         
     def unpackSequence(self, tup):
@@ -1184,13 +1183,14 @@
     args = []
     extra = []
     count = 0
-    for elt in arglist:
+    for i in range(len(arglist)):
+        elt = arglist[i]
         if type(elt) == types.StringType:
             args.append(elt)
         elif type(elt) == types.TupleType:
-            args.append(TupleArg(count, elt))
-            count = count + 1
+            args.append(TupleArg(i * 2, elt))
             extra.extend(misc.flatten(elt))
+            count = count + 1
         else:
             raise ValueError, "unexpect argument type:", elt
     return args + extra, count
