use fn pointers instead of special cases
no cpu hotplug, hence safe to break here