Function.prototype.bind = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}

var $A = Array.from = function(iterable) {
	if (!iterable) return [];	
	var results = [];
	for (var i = 0, length = iterable.length; i < length; i++)
	results.push(iterable[i]);
	return results;
}

