 			while (sidestack.length) {
 				value = sidestack.pop();
 				instructions.push(makeInstruction(new PushAbstraction(value.value), registers));
-				values.push(new AbstractArg(value.value));
+				var pushedArg:AbstractArg = new AbstractArg(value.value);
+				if (!AbstractArg.argInVec(pushedArg, values))
+					values.push(pushedArg);
 			}
 			
 			//cleanup other values to be initialized

		}
		
		
		
		protected function log(...args):void {
			if (DEBUG.PRINT_TESTS)
				C.log(args);
		}
		
		

					throw new Error("!");
			} else if (abstraction.value != value.value)
				throw new Error("!!!");
			
			return abstraction;
		}
