rewritten model to be able to fire and handle events on nodes