use proper types that match the function pointer definition to avoid surprises if the code should be refactored