added Event interface for observer