designed a hierarchy for TemporalEvent and added meaningful assertion error messages