use a function pointer for method dispatch
special case dispatchers