Simple event dispatcher component