	function Tunnel(base_url)
	{
		var self=this;
		this.init=function()
		{
			self.requests=[];
			self.request_running=false;
			self.base_url=base_url;
		}
		this.issue=function(data, callback)
		{
			self.requests[self.requests.length]={d:data,c:callback};
			
			if(!self.request_running)
			{
				self.request_running=true;
				self.run_requests();
			}
		}
		self.run_requests=function()
		{
			if(self.requests.length==0)
			{
				self.request_running=false;
				return;
			}
			
			var rand=Math.floor(Math.random()*100000000000);
			JQ.get(self.base_url, self.requests[0].d, self.issue_done, "json");	
		}
		this.issue_done=function(data)
		{
			self.requests[0].c(data);
			self.requests.shift();
	
			if(self.requests.length==0)
				self.request_running=false;
			else
				self.run_requests();
		}
		self.init();
	}
