Eighty-eight commands with one handler each, dispatched through four frames of indirection.
// before
$this->bus->dispatch(new PlaceOrder($id, $lines));
// after
$this->orders->place($id, $lines);
// and the stack trace, which is the whole point:
// before Controller → Bus → Middleware × 3 →
// HandlerLocator → Handler
// after Controller → Service
A command bus provides cross-cutting concerns and eighty-eight one-to-one mappings provide indirection. The transaction middleware moved to the two places that needed it and the authorisation check moved to the controller, both of which are better locations — and debugging is now reading a stack trace rather than following a dispatch.