Use subscribers to detect state change and emit those out to other participants. Use middleware to register the command listener.