Further disentanglement of common routine names
Uses procedure pointer to switch to the appropriate specifiv routine