for all that work getting rid of UB... lets add some back... by casting function pointers to void*