now uses Purity::Events