a library that uses function pointers for events