whole_func_string: function(err)
  		    {
  		        if(err)
  		        {
  		            defer.reject(err);
  		        }
  		        else
  		        {
  		            //remove the error object, send the info onwards
  		            [].shift.call(arguments);
  
  		            //now we have to do something funky here
  		            //if you expect more than one argument, we have to send in the argument object 
  		            //and you pick out the appropriate arguments
  		            //if it's just one, we send the one argument like normal
  
  		            //this is the behavior chosen
  		            if(arguments.length > 1)
  		                defer.resolve(arguments);
  		            else
  		                defer.resolve.apply(defer, arguments);
  		        }
  		    }
func_code_string: function(err)
  		    {
  		        if(err)
  		        {
  		            defer.reject(err);
  		        }
  		        else
  		        {
  		            //remove the error object, send the info onwards
  		            [].shift.call(arguments);
  
  		            //now we have to do something funky here
  		            //if you expect more than one argument, we have to send in the argument object 
  		            //and you pick out the appropriate arguments
  		            //if it's just one, we send the one argument like normal
  
  		            //this is the behavior chosen
  		            if(arguments.length > 1)
  		                defer.resolve(arguments);
  		            else
  		                defer.resolve.apply(defer, arguments);
  		        }
  		    }
func_documentation_string: make some assumptions about the returning call