added a function pointer typedef