function bind(func, thisArg) {
        var curryArgs = Array.prototype.slice.call(arguments, 2);
        return function() {
            var args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));
            return func.apply(thisArg, args);
        };
    }
function bind(func, thisArg) {
        var curryArgs = Array.prototype.slice.call(arguments, 2);
        return function() {
            var args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));
            return func.apply(thisArg, args);
        };
    }
function bind ( func , thisArg ) { var curryArgs = Array . prototype . slice . call ( arguments , 2 ) ; return function ( ) { var args = curryArgs . concat ( Array . prototype . slice . call ( arguments , 0 ) ) ; return func . apply ( thisArg , args ) ; } ; }
only really needed for phantom
only really needed for phantom