Cleaned up event implementation