Array.arrange = Array.prototype.arrange = function(fn, bind){ // could be just static Array.arrange if(fn && bind) fn = fn.bind(bind); return $A(this).sort(fn || $empty); }; Array.implement({ max: function(fn, bind){ return this.arrange(fn, bind)[0]; }, min: function(fn, bind){ return this.arrange(fn, bind).slice(-1)[0]; } });