changed World.subscribe_event to take a callback rather than just calling System.update. also added event matching feature though I haven't actually used it or tested it for that matter