function Struct(){
	this.id = 0;
	this.objects = {};
	this.ids = [];
}
Struct.prototype.add = function(callback){
	var o = this.getObject(++this.id);
	o.callback = callback;
	this.ids.push(this.id)
	return this.id;
}
Struct.prototype.remove = function(id){
	delete this.objects["o"+id];
	var len = this.ids.length;
	for(var i=0; i < len; i++){
		if(id == ids[i]){
			ids.splice(i,1);
			break;
		}
	}
}
Struct.prototype.dispatch = function(){
	var len = this.ids.length;
	for(var i=0; i < len; i++){
		this.getObject(this.ids[i]).callback();
	}
}
Struct.prototype.getObject = function(id){
	var o = this.objects["o"+id];
	if(!o){
		o=this.objects["o"+id] = { id:id };
	}
	return o;
}