Level function pointers for more extensible implementation

Needs testing.