Cleaned up events model