Dispatcher: split step()