Fix #14: Implement preemptive step scheduling, fix test