#4 Generalisation of events
#4 Unit test