OMG...
What you refer to as "void and casts" are simply function pointers. They allow you to set your own functions - which is needed...