(function($){
$.later = function(selector, context){
	var self = function(){
		var els = $(selector||this, context);
		$.each(self._queue, function(){ els = this[0].apply(els, this[1]); });
		return els;
	};
	self._queue = [];
	$.fn.each(function(name, fn){ // seems highly inefficient to copy all the methods to each 'self' but I don't see another way of doing it
		self[name] = $.isFunction(fn) ?
			function(){
				self._queue.push([$.fn[name], arguments]);
				return self; // allow for chaining
			} : fn;
	});
	return self;
}
$.fn.later = function(){
		return $.later(this.selector||this, this.context);
};
})(jQuery);