function $A (iterable)
{
    return Array.prototype.slice.apply(iterable);
}

Function.prototype.bind = function()
{
    var method = this;
	var args = $A(arguments);
	var obj = args.shift();
    return function ()
	{
        return method.apply(obj, args.concat($A(arguments)));
    };
}
