priority preempt implemented