I'm having an issue with how my arguments are being passed to a new recursion level. Here's a simplified version of what I'm doing:

```
var newFunction = function(obj) {
  var result = "";
  var args = [];
  Array.prototype.push.apply(args, arguments);
  var thisArg = args.shift()
  //do stuff to add onto result with thisArg. This block works, so I'm skipping.
  if (args.length !== 0) {
    result += newFunction(args);
  };
  return result;
};

```

The issue I'm having is related to how 'args' is getting passed into newFunction to cycle back through. When the recursive callback is made, args is passed into the new function scope as a single array argument: 

* original arguments = ("string", true, 9, "string 2")
* new arguments in recursion = ([true, 9, string 2])

It NEEDS to be:

* original arguments = ("string", true, 9, "string 2")
* new arguments in recursion = (true, 9, "string 2")

I'm pretty sure it's related to how I'm using .apply for the args variable. I'm just not sure how to get around that, since you can't .shift() the 'arguments' object. The way I'm doing it is setting args to be an array; so when it gets passed in, it is passing it as a single array. This is the problem with my code... 

Do you see what I'm doing wrong? Thanks in advance.