A generic C++ eventsystem library utilizing templates