more pointer type safety
more function pointer type safety