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
