(function(jq) {
	var asArray = function(a) {
		return Array.prototype.slice.call(a,0);
	}
	jq.delegate = function(func, scope, params) {
		return function() {
			if(!$.isArray(params)) params = [params];
			func.apply(scope, asArray(arguments).concat(params));
		}
	}	
	jq.callback = function(func, params) {
		return jq.delegate(func, this, params);
	}
})(jQuery);

