/// for simulation 

void handler::dependent(handler* e) {
	if (!next && e != this) next = new handler(*e);
	else if (e != this) next->dependent(e);  
	}

void handler::update() {
	if (secondary) operator()();
	if (next) next->update();
	}

int handler::contains(event* e) {
	if (this == e) return 1;
	else if (!next) return 0;
	else return next->contains(e);
	}

