diff --git a/composer.json b/composer.json
index 46e7369bc..6489f3737 100644
--- a/composer.json
+++ b/composer.json
@@ -11,8 +11,8 @@
     "ext-mongodb": "^1.3",
     "ext-rdkafka": "^3.0.3",
 
-    "queue-interop/amqp-interop": "0.8.x-dev",
-    "queue-interop/queue-interop": "0.7.x-dev",
+    "queue-interop/amqp-interop": "^0.8",
+    "queue-interop/queue-interop": "^0.7",
     "bunny/bunny": "^0.2.4|^0.3|^0.4",
     "php-amqplib/php-amqplib": "^2.7",
     "doctrine/dbal": "~2.5",
@@ -38,7 +38,7 @@
   "require-dev": {
     "phpunit/phpunit": "^5.5",
     "phpstan/phpstan": "^0.10",
-    "queue-interop/queue-spec": "0.6.x-dev",
+    "queue-interop/queue-spec": "^0.6",
     "symfony/browser-kit": "4.0.*",
     "symfony/config": "4.0.*",
     "symfony/process": "4.0.*",
diff --git a/pkg/amqp-bunny/composer.json b/pkg/amqp-bunny/composer.json
index 1097717c9..7bda3946e 100644
--- a/pkg/amqp-bunny/composer.json
+++ b/pkg/amqp-bunny/composer.json
@@ -7,8 +7,8 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/amqp-interop": "0.8.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/amqp-interop": "^0.8",
+        "queue-interop/queue-interop": "^0.7",
         "bunny/bunny": "^0.2.4|^0.3|^0.4",
         "enqueue/amqp-tools": "0.9.x-dev"
     },
@@ -16,7 +16,7 @@
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/amqp-ext/composer.json b/pkg/amqp-ext/composer.json
index 20c384e7f..5bedd525c 100644
--- a/pkg/amqp-ext/composer.json
+++ b/pkg/amqp-ext/composer.json
@@ -8,15 +8,15 @@
     "require": {
         "php": "^7.1.3",
         "ext-amqp": "^1.9.3",
-        "queue-interop/amqp-interop": "0.8.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/amqp-interop": "^0.8",
+        "queue-interop/queue-interop": "^0.7",
         "enqueue/amqp-tools": "0.9.x-dev"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev",
+        "queue-interop/queue-spec": "^0.6",
         "empi89/php-amqp-stubs": "*@dev"
     },
     "support": {
diff --git a/pkg/amqp-lib/composer.json b/pkg/amqp-lib/composer.json
index 470713c92..17b145a03 100644
--- a/pkg/amqp-lib/composer.json
+++ b/pkg/amqp-lib/composer.json
@@ -8,14 +8,14 @@
     "require": {
         "php": "^7.1.3",
         "php-amqplib/php-amqplib": "^2.7",
-        "queue-interop/amqp-interop": "0.8.x-dev",
+        "queue-interop/amqp-interop": "^0.8",
         "enqueue/amqp-tools": "0.9.x-dev"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/amqp-tools/composer.json b/pkg/amqp-tools/composer.json
index b250dbf8c..f0c70aa7f 100644
--- a/pkg/amqp-tools/composer.json
+++ b/pkg/amqp-tools/composer.json
@@ -7,8 +7,8 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/amqp-interop": "0.8.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev"
+        "queue-interop/amqp-interop": "^0.8",
+        "queue-interop/queue-interop": "^0.7"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
diff --git a/pkg/async-command/composer.json b/pkg/async-command/composer.json
index f56c0bf06..8e44fe39b 100644
--- a/pkg/async-command/composer.json
+++ b/pkg/async-command/composer.json
@@ -8,7 +8,7 @@
     "require": {
         "php": ">=7.1",
         "enqueue/enqueue": "0.9.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "symfony/console": "^3.4|^4",
         "symfony/process": "^3.4|^4"
     },
diff --git a/pkg/async-event-dispatcher/DependencyInjection/AsyncEventsPass.php b/pkg/async-event-dispatcher/DependencyInjection/AsyncEventsPass.php
index 702d23ac7..5371eb869 100644
--- a/pkg/async-event-dispatcher/DependencyInjection/AsyncEventsPass.php
+++ b/pkg/async-event-dispatcher/DependencyInjection/AsyncEventsPass.php
@@ -19,6 +19,8 @@ public function process(ContainerBuilder $container): void
             return;
         }
 
+        $defaultClient = $container->getParameter('enqueue.default_client');
+
         $registeredToEvent = [];
         foreach ($container->findTaggedServiceIds('kernel.event_listener') as $serviceId => $tagAttributes) {
             foreach ($tagAttributes as $tagAttribute) {
@@ -44,7 +46,7 @@ public function process(ContainerBuilder $container): void
                     $container->getDefinition('enqueue.events.async_processor')
                         ->addTag('enqueue.processor', [
                             'topic' => 'event.'.$event,
-                            'client' => 'default',
+                            'client' => $defaultClient,
                         ])
                     ;
 
@@ -78,7 +80,7 @@ public function process(ContainerBuilder $container): void
                         $container->getDefinition('enqueue.events.async_processor')
                             ->addTag('enqueue.processor', [
                                 'topicName' => 'event.'.$event,
-                                'client' => 'default',
+                                'client' => $defaultClient,
                             ])
                         ;
 
diff --git a/pkg/async-event-dispatcher/composer.json b/pkg/async-event-dispatcher/composer.json
index 1d005f0ba..2c9d253e8 100644
--- a/pkg/async-event-dispatcher/composer.json
+++ b/pkg/async-event-dispatcher/composer.json
@@ -8,7 +8,7 @@
     "require": {
         "php": "^7.1.3",
         "enqueue/enqueue": "0.9.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "symfony/event-dispatcher": "^3.4|^4"
     },
     "require-dev": {
diff --git a/pkg/dbal/composer.json b/pkg/dbal/composer.json
index 5feb5dc99..a39b5c622 100644
--- a/pkg/dbal/composer.json
+++ b/pkg/dbal/composer.json
@@ -7,7 +7,7 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "doctrine/dbal": "~2.5",
         "ramsey/uuid": "^3"
     },
@@ -15,7 +15,7 @@
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php b/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php
index 043039fa9..b5ae10ab9 100644
--- a/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php
+++ b/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php
@@ -43,7 +43,7 @@ public function load(array $configs, ContainerBuilder $container): void
             }
 
             // or with name 'default'
-            if ('default' === $name) {
+            if (DiUtils::DEFAULT_CONFIG === $name) {
                 $defaultName = $name;
             }
         }
diff --git a/pkg/enqueue-bundle/composer.json b/pkg/enqueue-bundle/composer.json
index efe06b027..4ca94b6ef 100644
--- a/pkg/enqueue-bundle/composer.json
+++ b/pkg/enqueue-bundle/composer.json
@@ -8,8 +8,8 @@
     "require": {
         "php": "^7.1.3",
         "symfony/framework-bundle": "^3.4|^4",
-        "queue-interop/amqp-interop": "0.8.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/amqp-interop": "^0.8",
+        "queue-interop/queue-interop": "^0.7",
         "enqueue/enqueue": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev"
     },
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/AnalyzeRouteCollectionPass.php b/pkg/enqueue/Symfony/Client/DependencyInjection/AnalyzeRouteCollectionPass.php
index 2613bcc3c..c541f4179 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/AnalyzeRouteCollectionPass.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/AnalyzeRouteCollectionPass.php
@@ -3,15 +3,12 @@
 namespace Enqueue\Symfony\Client\DependencyInjection;
 
 use Enqueue\Client\RouteCollection;
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 final class AnalyzeRouteCollectionPass implements CompilerPassInterface
 {
-    use FormatClientNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.clients')) {
@@ -21,8 +18,9 @@ public function process(ContainerBuilder $container): void
         $names = $container->getParameter('enqueue.clients');
 
         foreach ($names as $name) {
-            $this->name = $name;
-            $routeCollectionId = $this->format('route_collection');
+            $diUtils = DiUtils::create(ClientFactory::MODULE, $name);
+
+            $routeCollectionId = $diUtils->format('route_collection');
             if (false == $container->hasDefinition($routeCollectionId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $routeCollectionId));
             }
@@ -36,11 +34,6 @@ public function process(ContainerBuilder $container): void
         }
     }
 
-    protected function getName(): string
-    {
-        return $this->name;
-    }
-
     private function exclusiveCommandsCouldNotBeRunOnDefaultQueue(RouteCollection $collection): void
     {
         foreach ($collection->all() as $route) {
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildClientExtensionsPass.php b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildClientExtensionsPass.php
index 3f97093d8..5ad45fd90 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildClientExtensionsPass.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildClientExtensionsPass.php
@@ -2,16 +2,13 @@
 
 namespace Enqueue\Symfony\Client\DependencyInjection;
 
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Reference;
 
 final class BuildClientExtensionsPass implements CompilerPassInterface
 {
-    use FormatClientNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.clients')) {
@@ -19,10 +16,12 @@ public function process(ContainerBuilder $container): void
         }
 
         $names = $container->getParameter('enqueue.clients');
+        $defaultName = $container->getParameter('enqueue.default_client');
 
         foreach ($names as $name) {
-            $this->name = $name;
-            $extensionsId = $this->format('client_extensions');
+            $diUtils = DiUtils::create(ClientFactory::MODULE, $name);
+
+            $extensionsId = $diUtils->format('client_extensions');
             if (false == $container->hasDefinition($extensionsId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $extensionsId));
             }
@@ -35,9 +34,9 @@ public function process(ContainerBuilder $container): void
             $groupByPriority = [];
             foreach ($tags as $serviceId => $tagAttributes) {
                 foreach ($tagAttributes as $tagAttribute) {
-                    $client = $tagAttribute['client'] ?? 'default';
+                    $client = $tagAttribute['client'] ?? $defaultName;
 
-                    if ($client !== $this->name && 'all' !== $client) {
+                    if ($client !== $name && 'all' !== $client) {
                         continue;
                     }
 
@@ -61,9 +60,4 @@ public function process(ContainerBuilder $container): void
             ));
         }
     }
-
-    protected function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPass.php b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPass.php
index 6cc9934b0..cee1343f5 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPass.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPass.php
@@ -5,15 +5,12 @@
 use Enqueue\Client\CommandSubscriberInterface;
 use Enqueue\Client\Route;
 use Enqueue\Client\RouteCollection;
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 final class BuildCommandSubscriberRoutesPass implements CompilerPassInterface
 {
-    use FormatClientNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.clients')) {
@@ -21,10 +18,11 @@ public function process(ContainerBuilder $container): void
         }
 
         $names = $container->getParameter('enqueue.clients');
+        $defaultName = $container->getParameter('enqueue.default_client');
 
         foreach ($names as $name) {
-            $this->name = $name;
-            $routeCollectionId = sprintf('enqueue.client.%s.route_collection', $this->name);
+            $diUtils = DiUtils::create(ClientFactory::MODULE, $name);
+            $routeCollectionId = $diUtils->format('route_collection');
             if (false == $container->hasDefinition($routeCollectionId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $routeCollectionId));
             }
@@ -47,9 +45,9 @@ public function process(ContainerBuilder $container): void
                 }
 
                 foreach ($tagAttributes as $tagAttribute) {
-                    $client = $tagAttribute['client'] ?? 'default';
+                    $client = $tagAttribute['client'] ?? $defaultName;
 
-                    if ($client !== $this->name && 'all' !== $client) {
+                    if ($client !== $name && 'all' !== $client) {
                         continue;
                     }
 
@@ -103,9 +101,4 @@ public function process(ContainerBuilder $container): void
             ));
         }
     }
-
-    protected function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPass.php b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPass.php
index d05f6f09e..c1f1ce970 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPass.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPass.php
@@ -2,16 +2,13 @@
 
 namespace Enqueue\Symfony\Client\DependencyInjection;
 
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Reference;
 
 final class BuildConsumptionExtensionsPass implements CompilerPassInterface
 {
-    use FormatClientNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.clients')) {
@@ -19,11 +16,12 @@ public function process(ContainerBuilder $container): void
         }
 
         $names = $container->getParameter('enqueue.clients');
+        $defaultName = $container->getParameter('enqueue.default_client');
 
         foreach ($names as $name) {
-            $this->name = $name;
+            $diUtils = DiUtils::create(ClientFactory::MODULE, $name);
 
-            $extensionsId = $this->format('consumption_extensions');
+            $extensionsId = $diUtils->format('consumption_extensions');
             if (false == $container->hasDefinition($extensionsId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $extensionsId));
             }
@@ -36,9 +34,9 @@ public function process(ContainerBuilder $container): void
             $groupByPriority = [];
             foreach ($tags as $serviceId => $tagAttributes) {
                 foreach ($tagAttributes as $tagAttribute) {
-                    $client = $tagAttribute['client'] ?? 'default';
+                    $client = $tagAttribute['client'] ?? $defaultName;
 
-                    if ($client !== $this->name && 'all' !== $client) {
+                    if ($client !== $name && 'all' !== $client) {
                         continue;
                     }
 
@@ -62,9 +60,4 @@ public function process(ContainerBuilder $container): void
             ));
         }
     }
-
-    protected function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRegistryPass.php b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRegistryPass.php
index cdf40a832..3759dd209 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRegistryPass.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRegistryPass.php
@@ -3,6 +3,7 @@
 namespace Enqueue\Symfony\Client\DependencyInjection;
 
 use Enqueue\Client\RouteCollection;
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -10,10 +11,6 @@
 
 final class BuildProcessorRegistryPass implements CompilerPassInterface
 {
-    use FormatClientNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.clients')) {
@@ -23,19 +20,19 @@ public function process(ContainerBuilder $container): void
         $names = $container->getParameter('enqueue.clients');
 
         foreach ($names as $name) {
-            $this->name = $name;
+            $diUtils = DiUtils::create(ClientFactory::MODULE, $name);
 
-            $processorRegistryId = $this->format('processor_registry');
+            $processorRegistryId = $diUtils->format('processor_registry');
             if (false == $container->hasDefinition($processorRegistryId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $processorRegistryId));
             }
 
-            $routeCollectionId = $this->format('route_collection');
+            $routeCollectionId = $diUtils->format('route_collection');
             if (false == $container->hasDefinition($routeCollectionId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $routeCollectionId));
             }
 
-            $routerProcessorId = $this->format('router_processor');
+            $routerProcessorId = $diUtils->format('router_processor');
             if (false == $container->hasDefinition($routerProcessorId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $routerProcessorId));
             }
@@ -51,15 +48,10 @@ public function process(ContainerBuilder $container): void
                 $map[$route->getProcessor()] = new Reference($processorServiceId);
             }
 
-            $map[$this->parameter('router_processor')] = new Reference($routerProcessorId);
+            $map[$diUtils->parameter('router_processor')] = new Reference($routerProcessorId);
 
             $registry = $container->getDefinition($processorRegistryId);
             $registry->setArgument(0, ServiceLocatorTagPass::register($container, $map, $processorRegistryId));
         }
     }
-
-    private function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRoutesPass.php b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRoutesPass.php
index c89f37427..e88cb1f83 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRoutesPass.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildProcessorRoutesPass.php
@@ -4,15 +4,12 @@
 
 use Enqueue\Client\Route;
 use Enqueue\Client\RouteCollection;
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 final class BuildProcessorRoutesPass implements CompilerPassInterface
 {
-    use FormatClientNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.clients')) {
@@ -20,10 +17,11 @@ public function process(ContainerBuilder $container): void
         }
 
         $names = $container->getParameter('enqueue.clients');
+        $defaultName = $container->getParameter('enqueue.default_client');
 
         foreach ($names as $name) {
-            $this->name = $name;
-            $routeCollectionId = $this->format('route_collection');
+            $diUtils = DiUtils::create(ClientFactory::MODULE, $name);
+            $routeCollectionId = $diUtils->format('route_collection');
             if (false == $container->hasDefinition($routeCollectionId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $routeCollectionId));
             }
@@ -32,9 +30,9 @@ public function process(ContainerBuilder $container): void
             $routeCollection = new RouteCollection([]);
             foreach ($container->findTaggedServiceIds($tag) as $serviceId => $tagAttributes) {
                 foreach ($tagAttributes as $tagAttribute) {
-                    $client = $tagAttribute['client'] ?? 'default';
+                    $client = $tagAttribute['client'] ?? $defaultName;
 
-                    if ($client !== $this->name && 'all' !== $client) {
+                    if ($client !== $name && 'all' !== $client) {
                         continue;
                     }
 
@@ -76,9 +74,4 @@ public function process(ContainerBuilder $container): void
             ));
         }
     }
-
-    protected function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPass.php b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPass.php
index f1b9ecc1c..3414d4918 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPass.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPass.php
@@ -5,15 +5,12 @@
 use Enqueue\Client\Route;
 use Enqueue\Client\RouteCollection;
 use Enqueue\Client\TopicSubscriberInterface;
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 final class BuildTopicSubscriberRoutesPass implements CompilerPassInterface
 {
-    use FormatClientNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.clients')) {
@@ -21,10 +18,11 @@ public function process(ContainerBuilder $container): void
         }
 
         $names = $container->getParameter('enqueue.clients');
+        $defaultName = $container->getParameter('enqueue.default_client');
 
         foreach ($names as $name) {
-            $this->name = $name;
-            $routeCollectionId = $this->format('route_collection');
+            $diUtils = DiUtils::create(ClientFactory::MODULE, $name);
+            $routeCollectionId = $diUtils->format('route_collection');
             if (false == $container->hasDefinition($routeCollectionId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $routeCollectionId));
             }
@@ -47,9 +45,9 @@ public function process(ContainerBuilder $container): void
                 }
 
                 foreach ($tagAttributes as $tagAttribute) {
-                    $client = $tagAttribute['client'] ?? 'default';
+                    $client = $tagAttribute['client'] ?? $defaultName;
 
-                    if ($client !== $this->name && 'all' !== $client) {
+                    if ($client !== $name && 'all' !== $client) {
                         continue;
                     }
 
@@ -99,9 +97,4 @@ public function process(ContainerBuilder $container): void
             ));
         }
     }
-
-    protected function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/ClientFactory.php b/pkg/enqueue/Symfony/Client/DependencyInjection/ClientFactory.php
index 47d8e8ee5..0acf659f7 100644
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/ClientFactory.php
+++ b/pkg/enqueue/Symfony/Client/DependencyInjection/ClientFactory.php
@@ -22,6 +22,8 @@
 use Enqueue\Rpc\RpcFactory;
 use Enqueue\Symfony\Client\FlushSpoolProducerListener;
 use Enqueue\Symfony\ContainerProcessorRegistry;
+use Enqueue\Symfony\DependencyInjection\TransportFactory;
+use Enqueue\Symfony\DiUtils;
 use Interop\Queue\Context;
 use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
 use Symfony\Component\Config\Definition\Builder\NodeDefinition;
@@ -34,17 +36,17 @@
  */
 final class ClientFactory
 {
-    use FormatClientNameTrait;
+    public const MODULE = 'client';
 
     /**
-     * @var string
+     * @var bool
      */
-    private $name;
+    private $default;
 
     /**
-     * @var bool
+     * @var DiUtils
      */
-    private $default;
+    private $diUtils;
 
     public function __construct(string $name, bool $default = false)
     {
@@ -52,8 +54,8 @@ public function __construct(string $name, bool $default = false)
             throw new \InvalidArgumentException('The name could not be empty.');
         }
 
-        $this->name = $name;
         $this->default = $default;
+        $this->diUtils = DiUtils::create(self::MODULE, $name);
     }
 
     public static function getConfiguration(bool $debug, string $name = 'client'): NodeDefinition
@@ -77,21 +79,21 @@ public static function getConfiguration(bool $debug, string $name = 'client'): N
 
     public function build(ContainerBuilder $container, array $config): void
     {
-        $container->register($this->format('context'), Context::class)
-            ->setFactory([$this->reference('driver'), 'getContext'])
+        $container->register($this->diUtils->format('context'), Context::class)
+            ->setFactory([$this->diUtils->reference('driver'), 'getContext'])
         ;
 
-        $container->register($this->format('driver_factory'), DriverFactory::class)
-            ->addArgument($this->reference('config'))
-            ->addArgument($this->reference('route_collection'))
+        $container->register($this->diUtils->format('driver_factory'), DriverFactory::class)
+            ->addArgument($this->diUtils->reference('config'))
+            ->addArgument($this->diUtils->reference('route_collection'))
         ;
 
         $routerProcessor = empty($config['router_processor'])
-            ? $this->format('router_processor')
+            ? $this->diUtils->format('router_processor')
             : $config['router_processor']
         ;
 
-        $container->register($this->format('config'), Config::class)
+        $container->register($this->diUtils->format('config'), Config::class)
             ->setArguments([
                 $config['prefix'],
                 $config['app_name'],
@@ -103,86 +105,86 @@ public function build(ContainerBuilder $container, array $config): void
                 $config['transport'],
             ]);
 
-        $container->setParameter($this->format('router_processor'), $routerProcessor);
-        $container->setParameter($this->format('router_queue_name'), $config['router_queue']);
-        $container->setParameter($this->format('default_queue_name'), $config['default_processor_queue']);
+        $container->setParameter($this->diUtils->format('router_processor'), $routerProcessor);
+        $container->setParameter($this->diUtils->format('router_queue_name'), $config['router_queue']);
+        $container->setParameter($this->diUtils->format('default_queue_name'), $config['default_processor_queue']);
 
-        $container->register($this->format('route_collection'), RouteCollection::class)
+        $container->register($this->diUtils->format('route_collection'), RouteCollection::class)
             ->addArgument([])
             ->setFactory([RouteCollection::class, 'fromArray'])
         ;
 
-        $container->register($this->format('producer'), Producer::class)
+        $container->register($this->diUtils->format('producer'), Producer::class)
             ->setPublic(true)
-            ->addArgument($this->reference('driver'))
-            ->addArgument($this->reference('rpc_factory'))
-            ->addArgument($this->reference('client_extensions'))
+            ->addArgument($this->diUtils->reference('driver'))
+            ->addArgument($this->diUtils->reference('rpc_factory'))
+            ->addArgument($this->diUtils->reference('client_extensions'))
         ;
 
-        $container->register($this->format('spool_producer'), SpoolProducer::class)
-            ->addArgument($this->reference('producer'))
+        $container->register($this->diUtils->format('spool_producer'), SpoolProducer::class)
+            ->addArgument($this->diUtils->reference('producer'))
         ;
 
-        $container->register($this->format('client_extensions'), ChainExtension::class)
+        $container->register($this->diUtils->format('client_extensions'), ChainExtension::class)
             ->addArgument([])
         ;
 
-        $container->register($this->format('rpc_factory'), RpcFactory::class)
-            ->addArgument($this->reference('context'))
+        $container->register($this->diUtils->format('rpc_factory'), RpcFactory::class)
+            ->addArgument($this->diUtils->reference('context'))
         ;
 
-        $container->register($this->format('router_processor'), RouterProcessor::class)
-            ->addArgument($this->reference('driver'))
+        $container->register($this->diUtils->format('router_processor'), RouterProcessor::class)
+            ->addArgument($this->diUtils->reference('driver'))
         ;
 
-        $container->register($this->format('processor_registry'), ContainerProcessorRegistry::class);
+        $container->register($this->diUtils->format('processor_registry'), ContainerProcessorRegistry::class);
 
-        $container->register($this->format('delegate_processor'), DelegateProcessor::class)
-            ->addArgument($this->reference('processor_registry'))
+        $container->register($this->diUtils->format('delegate_processor'), DelegateProcessor::class)
+            ->addArgument($this->diUtils->reference('processor_registry'))
         ;
 
-        $container->register($this->format('set_router_properties_extension'), SetRouterPropertiesExtension::class)
-            ->addArgument($this->reference('driver'))
-            ->addTag('enqueue.consumption_extension', ['priority' => 100, 'client' => $this->name])
+        $container->register($this->diUtils->format('set_router_properties_extension'), SetRouterPropertiesExtension::class)
+            ->addArgument($this->diUtils->reference('driver'))
+            ->addTag('enqueue.consumption_extension', ['priority' => 100, 'client' => $this->diUtils->getConfigName()])
         ;
 
-        $container->register($this->format('queue_consumer'), QueueConsumer::class)
-            ->addArgument($this->reference('context'))
-            ->addArgument($this->reference('consumption_extensions'))
+        $container->register($this->diUtils->format('queue_consumer'), QueueConsumer::class)
+            ->addArgument($this->diUtils->reference('context'))
+            ->addArgument($this->diUtils->reference('consumption_extensions'))
             ->addArgument([])
-            ->addArgument($this->reference('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE))
+            ->addArgument($this->diUtils->reference('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE))
             ->addArgument($config['consumption']['receive_timeout'])
         ;
 
-        $container->register($this->format('consumption_extensions'), ConsumptionChainExtension::class)
+        $container->register($this->diUtils->format('consumption_extensions'), ConsumptionChainExtension::class)
             ->addArgument([])
         ;
 
-        $container->register($this->format('flush_spool_producer_extension'), FlushSpoolProducerExtension::class)
-            ->addArgument($this->reference('spool_producer'))
-            ->addTag('enqueue.consumption.extension', ['priority' => -100, 'client' => $this->name])
+        $container->register($this->diUtils->format('flush_spool_producer_extension'), FlushSpoolProducerExtension::class)
+            ->addArgument($this->diUtils->reference('spool_producer'))
+            ->addTag('enqueue.consumption.extension', ['priority' => -100, 'client' => $this->diUtils->getConfigName()])
         ;
 
-        $container->register($this->format('exclusive_command_extension'), ExclusiveCommandExtension::class)
-            ->addArgument($this->reference('driver'))
-            ->addTag('enqueue.consumption.extension', ['priority' => 100, 'client' => $this->name])
+        $container->register($this->diUtils->format('exclusive_command_extension'), ExclusiveCommandExtension::class)
+            ->addArgument($this->diUtils->reference('driver'))
+            ->addTag('enqueue.consumption.extension', ['priority' => 100, 'client' => $this->diUtils->getConfigName()])
         ;
 
         if ($config['traceable_producer']) {
-            $container->register($this->format('traceable_producer'), TraceableProducer::class)
-                ->setDecoratedService($this->format('producer'))
-                ->addArgument($this->reference('traceable_producer.inner'))
+            $container->register($this->diUtils->format('traceable_producer'), TraceableProducer::class)
+                ->setDecoratedService($this->diUtils->format('producer'))
+                ->addArgument($this->diUtils->reference('traceable_producer.inner'))
             ;
         }
 
         if ($config['redelivered_delay_time']) {
-            $container->register($this->format('delay_redelivered_message_extension'), DelayRedeliveredMessageExtension::class)
-                ->addArgument($this->reference('driver'))
+            $container->register($this->diUtils->format('delay_redelivered_message_extension'), DelayRedeliveredMessageExtension::class)
+                ->addArgument($this->diUtils->reference('driver'))
                 ->addArgument($config['redelivered_delay_time'])
-                ->addTag('enqueue.consumption_extension', ['priority' => 10, 'client' => $this->name])
+                ->addTag('enqueue.consumption_extension', ['priority' => 10, 'client' => $this->diUtils->getConfigName()])
             ;
 
-            $container->getDefinition($this->format('delay_redelivered_message_extension'))
+            $container->getDefinition($this->diUtils->format('delay_redelivered_message_extension'))
                 ->replaceArgument(1, $config['redelivered_delay_time'])
             ;
         }
@@ -191,24 +193,29 @@ public function build(ContainerBuilder $container, array $config): void
         if ($container->hasDefinition($locatorId)) {
             $locator = $container->getDefinition($locatorId);
             $locator->replaceArgument(0, array_replace($locator->getArgument(0), [
-                $this->format('queue_consumer') => $this->reference('queue_consumer'),
-                $this->format('driver') => $this->reference('driver'),
-                $this->format('delegate_processor') => $this->reference('delegate_processor'),
-                $this->format('producer') => $this->reference('producer'),
+                $this->diUtils->format('queue_consumer') => $this->diUtils->reference('queue_consumer'),
+                $this->diUtils->format('driver') => $this->diUtils->reference('driver'),
+                $this->diUtils->format('delegate_processor') => $this->diUtils->reference('delegate_processor'),
+                $this->diUtils->format('producer') => $this->diUtils->reference('producer'),
             ]));
         }
 
         if ($this->default) {
-            $container->setAlias(ProducerInterface::class, $this->format('producer'));
-            $container->setAlias(SpoolProducer::class, $this->format('spool_producer'));
+            $container->setAlias(ProducerInterface::class, $this->diUtils->format('producer'));
+            $container->setAlias(SpoolProducer::class, $this->diUtils->format('spool_producer'));
+
+            if (DiUtils::DEFAULT_CONFIG !== $this->diUtils->getConfigName()) {
+                $container->setAlias($this->diUtils->formatDefault('producer'), $this->diUtils->format('producer'));
+                $container->setAlias($this->diUtils->formatDefault('spool_producer'), $this->diUtils->format('spool_producer'));
+            }
         }
     }
 
     public function createDriver(ContainerBuilder $container, array $config): string
     {
-        $factoryId = sprintf('enqueue.transport.%s.connection_factory', $this->getName());
-        $driverId = sprintf('enqueue.client.%s.driver', $this->getName());
-        $driverFactoryId = sprintf('enqueue.client.%s.driver_factory', $this->getName());
+        $factoryId = DiUtils::create(TransportFactory::MODULE, $this->diUtils->getConfigName())->format('connection_factory');
+        $driverId = $this->diUtils->format('driver');
+        $driverFactoryId = $this->diUtils->format('driver_factory');
 
         $container->register($driverId, DriverInterface::class)
             ->setFactory([new Reference($driverFactoryId), 'create'])
@@ -217,19 +224,22 @@ public function createDriver(ContainerBuilder $container, array $config): string
             ->addArgument($config)
         ;
 
+        if ($this->default) {
+            $container->setAlias(DriverInterface::class, $driverId);
+
+            if (DiUtils::DEFAULT_CONFIG !== $this->diUtils->getConfigName()) {
+                $container->setAlias($this->diUtils->formatDefault('driver'), $driverId);
+            }
+        }
+
         return $driverId;
     }
 
     public function createFlushSpoolProducerListener(ContainerBuilder $container): void
     {
-        $container->register($this->format('flush_spool_producer_listener'), FlushSpoolProducerListener::class)
-            ->addArgument($this->reference('spool_producer'))
+        $container->register($this->diUtils->format('flush_spool_producer_listener'), FlushSpoolProducerListener::class)
+            ->addArgument($this->diUtils->reference('spool_producer'))
             ->addTag('kernel.event_subscriber')
         ;
     }
-
-    public function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/Client/DependencyInjection/FormatClientNameTrait.php b/pkg/enqueue/Symfony/Client/DependencyInjection/FormatClientNameTrait.php
deleted file mode 100644
index 41dace8bb..000000000
--- a/pkg/enqueue/Symfony/Client/DependencyInjection/FormatClientNameTrait.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Enqueue\Symfony\Client\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-
-trait FormatClientNameTrait
-{
-    abstract protected function getName(): string;
-
-    private function reference(string $serviceName, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE): Reference
-    {
-        return new Reference($this->format($serviceName), $invalidBehavior);
-    }
-
-    private function parameter(string $serviceName): string
-    {
-        $fullName = $this->format($serviceName);
-
-        return "%$fullName%";
-    }
-
-    private function format(string $serviceName): string
-    {
-        $pattern = 'enqueue.client.%s.'.$serviceName;
-
-        return sprintf($pattern, $this->getName());
-    }
-}
diff --git a/pkg/enqueue/Symfony/DependencyInjection/BuildConsumptionExtensionsPass.php b/pkg/enqueue/Symfony/DependencyInjection/BuildConsumptionExtensionsPass.php
index 857ddf278..352682b19 100644
--- a/pkg/enqueue/Symfony/DependencyInjection/BuildConsumptionExtensionsPass.php
+++ b/pkg/enqueue/Symfony/DependencyInjection/BuildConsumptionExtensionsPass.php
@@ -2,16 +2,13 @@
 
 namespace Enqueue\Symfony\DependencyInjection;
 
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Reference;
 
 final class BuildConsumptionExtensionsPass implements CompilerPassInterface
 {
-    use FormatTransportNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.transports')) {
@@ -19,11 +16,12 @@ public function process(ContainerBuilder $container): void
         }
 
         $names = $container->getParameter('enqueue.transports');
+        $defaultName = $container->getParameter('enqueue.default_transport');
 
         foreach ($names as $name) {
-            $this->name = $name;
+            $diUtils = DiUtils::create(TransportFactory::MODULE, $name);
 
-            $extensionsId = $this->format('consumption_extensions');
+            $extensionsId = $diUtils->format('consumption_extensions');
             if (false == $container->hasDefinition($extensionsId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $extensionsId));
             }
@@ -33,9 +31,9 @@ public function process(ContainerBuilder $container): void
             $groupByPriority = [];
             foreach ($tags as $serviceId => $tagAttributes) {
                 foreach ($tagAttributes as $tagAttribute) {
-                    $transport = $tagAttribute['transport'] ?? 'default';
+                    $transport = $tagAttribute['transport'] ?? $defaultName;
 
-                    if ($transport !== $this->name && 'all' !== $transport) {
+                    if ($transport !== $name && 'all' !== $transport) {
                         continue;
                     }
 
@@ -59,9 +57,4 @@ public function process(ContainerBuilder $container): void
             ));
         }
     }
-
-    protected function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/DependencyInjection/BuildProcessorRegistryPass.php b/pkg/enqueue/Symfony/DependencyInjection/BuildProcessorRegistryPass.php
index c9b7f8b3a..cc6e04270 100644
--- a/pkg/enqueue/Symfony/DependencyInjection/BuildProcessorRegistryPass.php
+++ b/pkg/enqueue/Symfony/DependencyInjection/BuildProcessorRegistryPass.php
@@ -2,6 +2,7 @@
 
 namespace Enqueue\Symfony\DependencyInjection;
 
+use Enqueue\Symfony\DiUtils;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -9,10 +10,6 @@
 
 final class BuildProcessorRegistryPass implements CompilerPassInterface
 {
-    use FormatTransportNameTrait;
-
-    protected $name;
-
     public function process(ContainerBuilder $container): void
     {
         if (false == $container->hasParameter('enqueue.transports')) {
@@ -20,11 +17,12 @@ public function process(ContainerBuilder $container): void
         }
 
         $names = $container->getParameter('enqueue.transports');
+        $defaultName = $container->getParameter('enqueue.default_transport');
 
         foreach ($names as $name) {
-            $this->name = $name;
+            $diUtils = DiUtils::create(TransportFactory::MODULE, $name);
 
-            $processorRegistryId = $this->format('processor_registry');
+            $processorRegistryId = $diUtils->format('processor_registry');
             if (false == $container->hasDefinition($processorRegistryId)) {
                 throw new \LogicException(sprintf('Service "%s" not found', $processorRegistryId));
             }
@@ -33,9 +31,9 @@ public function process(ContainerBuilder $container): void
             $map = [];
             foreach ($container->findTaggedServiceIds($tag) as $serviceId => $tagAttributes) {
                 foreach ($tagAttributes as $tagAttribute) {
-                    $transport = $tagAttribute['transport'] ?? 'default';
+                    $transport = $tagAttribute['transport'] ?? $defaultName;
 
-                    if ($transport !== $this->name && 'all' !== $transport) {
+                    if ($transport !== $name && 'all' !== $transport) {
                         continue;
                     }
 
@@ -49,9 +47,4 @@ public function process(ContainerBuilder $container): void
             $registry->setArgument(0, ServiceLocatorTagPass::register($container, $map, $processorRegistryId));
         }
     }
-
-    protected function getName(): string
-    {
-        return $this->name;
-    }
 }
diff --git a/pkg/enqueue/Symfony/DependencyInjection/FormatTransportNameTrait.php b/pkg/enqueue/Symfony/DependencyInjection/FormatTransportNameTrait.php
deleted file mode 100644
index dd0fdd7bc..000000000
--- a/pkg/enqueue/Symfony/DependencyInjection/FormatTransportNameTrait.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Enqueue\Symfony\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-
-trait FormatTransportNameTrait
-{
-    abstract protected function getName(): string;
-
-    private function reference(string $serviceName, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE): Reference
-    {
-        return new Reference($this->format($serviceName), $invalidBehavior);
-    }
-
-    private function parameter(string $serviceName): string
-    {
-        $fullName = $this->format($serviceName);
-
-        return "%$fullName%";
-    }
-
-    private function format(string $serviceName): string
-    {
-        $pattern = 'enqueue.transport.%s.'.$serviceName;
-
-        return sprintf($pattern, $this->getName());
-    }
-}
diff --git a/pkg/enqueue/Symfony/DependencyInjection/TransportFactory.php b/pkg/enqueue/Symfony/DependencyInjection/TransportFactory.php
index eb9454b3a..5cc1a6507 100644
--- a/pkg/enqueue/Symfony/DependencyInjection/TransportFactory.php
+++ b/pkg/enqueue/Symfony/DependencyInjection/TransportFactory.php
@@ -12,6 +12,7 @@
 use Enqueue\Rpc\RpcClient;
 use Enqueue\Rpc\RpcFactory;
 use Enqueue\Symfony\ContainerProcessorRegistry;
+use Enqueue\Symfony\DiUtils;
 use Interop\Queue\ConnectionFactory;
 use Interop\Queue\Context;
 use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
@@ -25,17 +26,17 @@
  */
 final class TransportFactory
 {
-    use FormatTransportNameTrait;
+    public const MODULE = 'transport';
 
     /**
-     * @var string
+     * @var bool
      */
-    private $name;
+    private $default;
 
     /**
-     * @var bool
+     * @var DiUtils
      */
-    private $default;
+    private $diUtils;
 
     public function __construct(string $name, bool $default = false)
     {
@@ -43,8 +44,8 @@ public function __construct(string $name, bool $default = false)
             throw new \InvalidArgumentException('The name could not be empty.');
         }
 
-        $this->name = $name;
         $this->default = $default;
+        $this->diUtils = DiUtils::create(self::MODULE, $name);
     }
 
     public static function getConfiguration(string $name = 'transport'): NodeDefinition
@@ -123,16 +124,11 @@ public static function getQueueConsumerConfiguration(string $name = 'consumption
         return $builder;
     }
 
-    public function getName(): string
-    {
-        return $this->name;
-    }
-
     public function buildConnectionFactory(ContainerBuilder $container, array $config): void
     {
-        $factoryId = $this->format('connection_factory');
+        $factoryId = $this->diUtils->format('connection_factory');
 
-        $factoryFactoryId = $this->format('connection_factory_factory');
+        $factoryFactoryId = $this->diUtils->format('connection_factory_factory');
         $container->register($factoryFactoryId, $config['factory_class'] ?? ConnectionFactoryFactory::class);
 
         $factoryFactoryService = new Reference(
@@ -156,16 +152,20 @@ public function buildConnectionFactory(ContainerBuilder $container, array $confi
         }
 
         if ($this->default) {
-            $container->setAlias(ConnectionFactory::class, $this->format('connection_factory'));
+            $container->setAlias(ConnectionFactory::class, $factoryId);
+
+            if (DiUtils::DEFAULT_CONFIG !== $this->diUtils->getConfigName()) {
+                $container->setAlias($this->diUtils->formatDefault('connection_factory'), $factoryId);
+            }
         }
     }
 
     public function buildContext(ContainerBuilder $container, array $config): void
     {
-        $factoryId = $this->format('connection_factory');
+        $factoryId = $this->diUtils->format('connection_factory');
         $this->assertServiceExists($container, $factoryId);
 
-        $contextId = $this->format('context');
+        $contextId = $this->diUtils->format('context');
 
         $container->register($contextId, Context::class)
             ->setFactory([new Reference($factoryId), 'createContext'])
@@ -174,60 +174,72 @@ public function buildContext(ContainerBuilder $container, array $config): void
         $this->addServiceToLocator($container, 'context');
 
         if ($this->default) {
-            $container->setAlias(Context::class, $this->format('context'));
+            $container->setAlias(Context::class, $contextId);
+
+            if (DiUtils::DEFAULT_CONFIG !== $this->diUtils->getConfigName()) {
+                $container->setAlias($this->diUtils->formatDefault('context'), $contextId);
+            }
         }
     }
 
     public function buildQueueConsumer(ContainerBuilder $container, array $config): void
     {
-        $contextId = $this->format('context');
+        $contextId = $this->diUtils->format('context');
         $this->assertServiceExists($container, $contextId);
 
-        $container->setParameter($this->format('receive_timeout'), $config['receive_timeout'] ?? 10000);
+        $container->setParameter($this->diUtils->format('receive_timeout'), $config['receive_timeout'] ?? 10000);
 
-        $logExtensionId = $this->format('log_extension');
+        $logExtensionId = $this->diUtils->format('log_extension');
         $container->register($logExtensionId, LogExtension::class)
-            ->addTag('enqueue.transport.consumption_extension', ['transport' => $this->name, 'priority' => -100])
+            ->addTag('enqueue.transport.consumption_extension', ['transport' => $this->diUtils->getConfigName(), 'priority' => -100])
         ;
 
-        $container->register($this->format('consumption_extensions'), ChainExtension::class)
+        $container->register($this->diUtils->format('consumption_extensions'), ChainExtension::class)
             ->addArgument([])
         ;
 
-        $container->register($this->format('queue_consumer'), QueueConsumer::class)
+        $container->register($this->diUtils->format('queue_consumer'), QueueConsumer::class)
             ->addArgument(new Reference($contextId))
-            ->addArgument(new Reference($this->format('consumption_extensions')))
+            ->addArgument(new Reference($this->diUtils->format('consumption_extensions')))
             ->addArgument([])
             ->addArgument(new Reference('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE))
-            ->addArgument($this->parameter('receive_timeout'))
+            ->addArgument($this->diUtils->parameter('receive_timeout'))
         ;
 
-        $container->register($this->format('processor_registry'), ContainerProcessorRegistry::class);
+        $container->register($this->diUtils->format('processor_registry'), ContainerProcessorRegistry::class);
 
         $this->addServiceToLocator($container, 'queue_consumer');
         $this->addServiceToLocator($container, 'processor_registry');
 
         if ($this->default) {
-            $container->setAlias(QueueConsumerInterface::class, $this->format('queue_consumer'));
+            $container->setAlias(QueueConsumerInterface::class, $this->diUtils->format('queue_consumer'));
+
+            if (DiUtils::DEFAULT_CONFIG !== $this->diUtils->getConfigName()) {
+                $container->setAlias($this->diUtils->formatDefault('queue_consumer'), $this->diUtils->format('queue_consumer'));
+            }
         }
     }
 
     public function buildRpcClient(ContainerBuilder $container, array $config): void
     {
-        $contextId = $this->format('context');
+        $contextId = $this->diUtils->format('context');
         $this->assertServiceExists($container, $contextId);
 
-        $container->register($this->format('rpc_factory'), RpcFactory::class)
+        $container->register($this->diUtils->format('rpc_factory'), RpcFactory::class)
             ->addArgument(new Reference($contextId))
         ;
 
-        $container->register($this->format('rpc_client'), RpcClient::class)
+        $container->register($this->diUtils->format('rpc_client'), RpcClient::class)
             ->addArgument(new Reference($contextId))
-            ->addArgument(new Reference($this->format('rpc_factory')))
+            ->addArgument(new Reference($this->diUtils->format('rpc_factory')))
         ;
 
         if ($this->default) {
-            $container->setAlias(RpcClient::class, $this->format('rpc_client'));
+            $container->setAlias(RpcClient::class, $this->diUtils->format('rpc_client'));
+
+            if (DiUtils::DEFAULT_CONFIG !== $this->diUtils->getConfigName()) {
+                $container->setAlias($this->diUtils->formatDefault('rpc_client'), $this->diUtils->format('rpc_client'));
+            }
         }
     }
 
@@ -246,7 +258,7 @@ private function addServiceToLocator(ContainerBuilder $container, string $servic
             $locator = $container->getDefinition($locatorId);
 
             $map = $locator->getArgument(0);
-            $map[$this->format($serviceName)] = $this->reference($serviceName);
+            $map[$this->diUtils->format($serviceName)] = $this->diUtils->reference($serviceName);
 
             $locator->replaceArgument(0, $map);
         }
diff --git a/pkg/enqueue/Symfony/DiUtils.php b/pkg/enqueue/Symfony/DiUtils.php
index 678104312..335ff04b9 100644
--- a/pkg/enqueue/Symfony/DiUtils.php
+++ b/pkg/enqueue/Symfony/DiUtils.php
@@ -7,6 +7,8 @@
 
 class DiUtils
 {
+    public const DEFAULT_CONFIG = 'default';
+
     /**
      * @var string
      */
@@ -43,6 +45,11 @@ public function reference(string $serviceName, $invalidBehavior = ContainerInter
         return new Reference($this->format($serviceName), $invalidBehavior);
     }
 
+    public function referenceDefault(string $serviceName, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE): Reference
+    {
+        return new Reference($this->formatDefault($serviceName), $invalidBehavior);
+    }
+
     public function parameter(string $serviceName): string
     {
         $fullName = $this->format($serviceName);
@@ -50,8 +57,25 @@ public function parameter(string $serviceName): string
         return "%$fullName%";
     }
 
+    public function parameterDefault(string $serviceName): string
+    {
+        $fullName = $this->formatDefault($serviceName);
+
+        return "%$fullName%";
+    }
+
     public function format(string $serviceName): string
     {
-        return sprintf('enqueue.%s.%s.%s', $this->moduleName, $this->configName, $serviceName);
+        return $this->doFormat($this->moduleName, $this->configName, $serviceName);
+    }
+
+    public function formatDefault(string $serviceName): string
+    {
+        return $this->doFormat($this->moduleName, self::DEFAULT_CONFIG, $serviceName);
+    }
+
+    private function doFormat(string $moduleName, string $configName, string $serviceName): string
+    {
+        return sprintf('enqueue.%s.%s.%s', $moduleName, $configName, $serviceName);
     }
 }
diff --git a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildClientExtensionsPassTest.php b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildClientExtensionsPassTest.php
index e1c8bdcf4..af69293d1 100644
--- a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildClientExtensionsPassTest.php
+++ b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildClientExtensionsPassTest.php
@@ -43,6 +43,7 @@ public function testThrowsIfNoClientExtensionsServiceFoundForConfiguredTransport
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_client', 'foo');
 
         $pass = new BuildClientExtensionsPass();
 
@@ -58,6 +59,7 @@ public function testShouldRegisterClientExtension()
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['aName']);
+        $container->setParameter('enqueue.default_client', 'foo');
         $container->setDefinition('enqueue.client.aName.client_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
@@ -84,6 +86,7 @@ public function testShouldIgnoreOtherClientExtensions()
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['aName']);
+        $container->setParameter('enqueue.default_client', 'foo');
         $container->setDefinition('enqueue.client.aName.client_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
@@ -109,6 +112,7 @@ public function testShouldAddExtensionIfClientAll()
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['aName']);
+        $container->setParameter('enqueue.default_client', 'foo');
         $container->setDefinition('enqueue.client.aName.client_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
@@ -133,8 +137,9 @@ public function testShouldTreatTagsWithoutClientAsDefaultClient()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.client_extensions', $extensions);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.client_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.client_extension')
@@ -156,11 +161,12 @@ public function testShouldTreatTagsWithoutClientAsDefaultClient()
     public function testShouldOrderExtensionsByPriority()
     {
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
 
         $extensions = new Definition();
         $extensions->addArgument([]);
-        $container->setDefinition('enqueue.client.default.client_extensions', $extensions);
+        $container->setDefinition('enqueue.client.foo.client_extensions', $extensions);
 
         $extension = new Definition();
         $extension->addTag('enqueue.client_extension', ['priority' => 6]);
@@ -188,11 +194,12 @@ public function testShouldOrderExtensionsByPriority()
     public function testShouldAssumePriorityZeroIfPriorityIsNotSet()
     {
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
 
         $extensions = new Definition();
         $extensions->addArgument([]);
-        $container->setDefinition('enqueue.client.default.client_extensions', $extensions);
+        $container->setDefinition('enqueue.client.foo.client_extensions', $extensions);
 
         $extension = new Definition();
         $extension->addTag('enqueue.client_extension');
@@ -226,8 +233,9 @@ public function testShouldMergeWithAddedPreviously()
         ]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['aName']);
-        $container->setDefinition('enqueue.client.aName.client_extensions', $extensions);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.client_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.client_extension')
@@ -240,10 +248,7 @@ public function testShouldMergeWithAddedPreviously()
         $pass->process($container);
 
         $this->assertInternalType('array', $extensions->getArgument(0));
-        $this->assertEquals([
-            'aBarExtension' => 'aBarServiceIdAddedPreviously',
-            'aOloloExtension' => 'aOloloServiceIdAddedPreviously',
-        ], $extensions->getArgument(0));
+        $this->assertCount(4, $extensions->getArgument(0));
     }
 
     public function testShouldRegisterProcessorWithMatchedNameToCorrespondingExtensions()
@@ -256,6 +261,7 @@ public function testShouldRegisterProcessorWithMatchedNameToCorrespondingExtensi
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_client', 'foo');
         $container->setDefinition('enqueue.client.foo.client_extensions', $fooExtensions);
         $container->setDefinition('enqueue.client.bar.client_extensions', $barExtensions);
 
diff --git a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPassTest.php b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPassTest.php
index e077a768c..603f0fb0d 100644
--- a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPassTest.php
+++ b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildCommandSubscriberRoutesPassTest.php
@@ -47,6 +47,7 @@ public function testThrowsIfNoRouteCollectionServiceFoundForConfiguredTransport(
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_client', 'baz');
 
         $pass = new BuildCommandSubscriberRoutesPass();
 
@@ -59,6 +60,7 @@ public function testThrowIfTaggedProcessorIsBuiltByFactory()
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['aName']);
+        $container->setParameter('enqueue.default_client', 'foo');
         $container->register('enqueue.client.aName.route_collection', RouteCollection::class)
             ->addArgument([])
         ;
@@ -81,6 +83,7 @@ public function testShouldRegisterProcessorWithMatchedName()
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
         $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($this->createCommandSubscriberProcessor()))
             ->addTag('enqueue.command_subscriber', ['client' => 'foo'])
@@ -103,8 +106,9 @@ public function testShouldRegisterProcessorWithoutNameToDefaultClient()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($this->createCommandSubscriberProcessor()))
             ->addTag('enqueue.command_subscriber')
         ;
@@ -126,8 +130,9 @@ public function testShouldRegisterProcessorIfClientNameEqualsAll()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($this->createCommandSubscriberProcessor()))
             ->addTag('enqueue.command_subscriber', ['client' => 'all'])
         ;
@@ -151,8 +156,9 @@ public function testShouldRegisterProcessorIfCommandsIsString()
         $processor = $this->createCommandSubscriberProcessor('fooCommand');
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.command_subscriber')
         ;
@@ -184,8 +190,9 @@ public function testThrowIfCommandSubscriberReturnsNothing()
         $processor = $this->createCommandSubscriberProcessor(null);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.command_subscriber')
         ;
@@ -205,8 +212,9 @@ public function testShouldRegisterProcessorIfCommandsAreStrings()
         $processor = $this->createCommandSubscriberProcessor(['fooCommand', 'barCommand']);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.command_subscriber')
         ;
@@ -248,8 +256,9 @@ public function testShouldRegisterProcessorIfParamSingleCommandArray()
         ]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.command_subscriber')
         ;
@@ -286,8 +295,9 @@ public function testShouldRegisterProcessorIfCommandsAreParamArrays()
         ]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.command_subscriber')
         ;
@@ -327,8 +337,9 @@ public function testThrowIfCommandSubscriberParamsInvalid()
         $processor = $this->createCommandSubscriberProcessor(['fooBar', true]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.command_subscriber')
         ;
@@ -351,8 +362,9 @@ public function testShouldMergeExtractedRoutesWithAlreadySetInCollection()
         $processor = $this->createCommandSubscriberProcessor(['fooCommand']);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.command_subscriber')
         ;
diff --git a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPassTest.php b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPassTest.php
index d3936fedd..db991e982 100644
--- a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPassTest.php
+++ b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildConsumptionExtensionsPassTest.php
@@ -43,6 +43,7 @@ public function testThrowsIfNoConsumptionExtensionsServiceFoundForConfiguredTran
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_client', 'baz');
 
         $pass = new BuildConsumptionExtensionsPass();
 
@@ -57,14 +58,15 @@ public function testShouldRegisterClientExtension()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['aName']);
-        $container->setDefinition('enqueue.client.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
-            ->addTag('enqueue.consumption_extension', ['client' => 'aName'])
+            ->addTag('enqueue.consumption_extension', ['client' => 'foo'])
         ;
         $container->register('aBarExtension', ExtensionInterface::class)
-            ->addTag('enqueue.consumption_extension', ['client' => 'aName'])
+            ->addTag('enqueue.consumption_extension', ['client' => 'foo'])
         ;
 
         $pass = new BuildConsumptionExtensionsPass();
@@ -83,11 +85,12 @@ public function testShouldIgnoreOtherClientExtensions()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['aName']);
-        $container->setDefinition('enqueue.client.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
-            ->addTag('enqueue.consumption_extension', ['client' => 'aName'])
+            ->addTag('enqueue.consumption_extension', ['client' => 'foo'])
         ;
         $container->register('aBarExtension', ExtensionInterface::class)
             ->addTag('enqueue.consumption_extension', ['client' => 'anotherName'])
@@ -108,8 +111,9 @@ public function testShouldAddExtensionIfClientAll()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['aName']);
-        $container->setDefinition('enqueue.client.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.consumption_extension', ['client' => 'all'])
@@ -133,8 +137,9 @@ public function testShouldTreatTagsWithoutClientAsDefaultClient()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.consumption_extension')
@@ -156,11 +161,12 @@ public function testShouldTreatTagsWithoutClientAsDefaultClient()
     public function testShouldOrderExtensionsByPriority()
     {
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
 
         $extensions = new Definition();
         $extensions->addArgument([]);
-        $container->setDefinition('enqueue.client.default.consumption_extensions', $extensions);
+        $container->setDefinition('enqueue.client.foo.consumption_extensions', $extensions);
 
         $extension = new Definition();
         $extension->addTag('enqueue.consumption_extension', ['priority' => 6]);
@@ -188,11 +194,12 @@ public function testShouldOrderExtensionsByPriority()
     public function testShouldAssumePriorityZeroIfPriorityIsNotSet()
     {
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
 
         $extensions = new Definition();
         $extensions->addArgument([]);
-        $container->setDefinition('enqueue.client.default.consumption_extensions', $extensions);
+        $container->setDefinition('enqueue.client.foo.consumption_extensions', $extensions);
 
         $extension = new Definition();
         $extension->addTag('enqueue.consumption_extension');
@@ -226,8 +233,9 @@ public function testShouldMergeWithAddedPreviously()
         ]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['aName']);
-        $container->setDefinition('enqueue.client.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.consumption_extension')
@@ -240,10 +248,7 @@ public function testShouldMergeWithAddedPreviously()
         $pass->process($container);
 
         $this->assertInternalType('array', $extensions->getArgument(0));
-        $this->assertEquals([
-            'aBarExtension' => 'aBarServiceIdAddedPreviously',
-            'aOloloExtension' => 'aOloloServiceIdAddedPreviously',
-        ], $extensions->getArgument(0));
+        $this->assertCount(4, $extensions->getArgument(0));
     }
 
     public function testShouldRegisterProcessorWithMatchedNameToCorrespondingExtensions()
@@ -256,6 +261,7 @@ public function testShouldRegisterProcessorWithMatchedNameToCorrespondingExtensi
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_client', 'foo');
         $container->setDefinition('enqueue.client.foo.consumption_extensions', $fooExtensions);
         $container->setDefinition('enqueue.client.bar.consumption_extensions', $barExtensions);
 
diff --git a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildProcessorRoutesPassTest.php b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildProcessorRoutesPassTest.php
index e671f7a8b..74553e6eb 100644
--- a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildProcessorRoutesPassTest.php
+++ b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildProcessorRoutesPassTest.php
@@ -43,6 +43,7 @@ public function testThrowsIfNoRouteCollectionServiceFoundForConfiguredTransport(
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_client', 'baz');
 
         $pass = new BuildProcessorRoutesPass();
 
@@ -57,8 +58,9 @@ public function testThrowIfBothTopicAndCommandAttributesAreSet()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['topic' => 'foo', 'command' => 'bar'])
         ;
@@ -76,8 +78,9 @@ public function testThrowIfNeitherTopicNorCommandAttributesAreSet()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', [])
         ;
@@ -96,6 +99,7 @@ public function testShouldRegisterProcessorWithMatchedName()
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'bar');
         $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['client' => 'foo', 'topic' => 'foo'])
@@ -118,8 +122,9 @@ public function testShouldRegisterProcessorWithoutNameToDefaultClient()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['topic' => 'foo'])
         ;
@@ -141,8 +146,9 @@ public function testShouldRegisterProcessorIfClientNameEqualsAll()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['client' => 'all', 'topic' => 'foo'])
         ;
@@ -164,8 +170,9 @@ public function testShouldRegisterAsTopicProcessor()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['topic' => 'aTopic'])
         ;
@@ -195,8 +202,9 @@ public function testShouldRegisterAsCommandProcessor()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['command' => 'aCommand'])
         ;
@@ -226,8 +234,9 @@ public function testShouldRegisterWithCustomProcessorName()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['command' => 'aCommand', 'processor' => 'customProcessorName'])
         ;
@@ -260,8 +269,9 @@ public function testShouldMergeExtractedRoutesWithAlreadySetInCollection()
         ]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.processor', ['command' => 'fooCommand'])
         ;
diff --git a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPassTest.php b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPassTest.php
index 25033f0c8..72f5b2152 100644
--- a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPassTest.php
+++ b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/BuildTopicSubscriberRoutesPassTest.php
@@ -47,6 +47,7 @@ public function testThrowsIfNoRouteCollectionServiceFoundForConfiguredTransport(
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_client', 'baz');
 
         $pass = new BuildTopicSubscriberRoutesPass();
 
@@ -58,8 +59,9 @@ public function testThrowsIfNoRouteCollectionServiceFoundForConfiguredTransport(
     public function testThrowIfTaggedProcessorIsBuiltByFactory()
     {
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['aName']);
-        $container->register('enqueue.client.aName.route_collection', RouteCollection::class)
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->register('enqueue.client.foo.route_collection', RouteCollection::class)
             ->addArgument([])
         ;
         $container->register('aProcessor', Processor::class)
@@ -81,6 +83,7 @@ public function testShouldRegisterProcessorWithMatchedName()
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'bar');
         $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($this->createTopicSubscriberProcessor()))
             ->addTag('enqueue.topic_subscriber', ['client' => 'foo'])
@@ -103,8 +106,9 @@ public function testShouldRegisterProcessorWithoutNameToDefaultClient()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($this->createTopicSubscriberProcessor()))
             ->addTag('enqueue.topic_subscriber')
         ;
@@ -126,8 +130,9 @@ public function testShouldRegisterProcessorIfClientNameEqualsAll()
         $routeCollection->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($this->createTopicSubscriberProcessor()))
             ->addTag('enqueue.topic_subscriber', ['client' => 'all'])
         ;
@@ -151,8 +156,9 @@ public function testShouldRegisterProcessorIfTopicsIsString()
         $processor = $this->createTopicSubscriberProcessor('fooTopic');
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.topic_subscriber')
         ;
@@ -184,8 +190,9 @@ public function testThrowIfTopicSubscriberReturnsNothing()
         $processor = $this->createTopicSubscriberProcessor(null);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.topic_subscriber')
         ;
@@ -205,8 +212,9 @@ public function testShouldRegisterProcessorIfTopicsAreStrings()
         $processor = $this->createTopicSubscriberProcessor(['fooTopic', 'barTopic']);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.topic_subscriber')
         ;
@@ -247,8 +255,9 @@ public function testShouldRegisterProcessorIfTopicsAreParamArrays()
         ]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.topic_subscriber')
         ;
@@ -288,8 +297,9 @@ public function testThrowIfTopicSubscriberParamsInvalid()
         $processor = $this->createTopicSubscriberProcessor(['fooBar', true]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.topic_subscriber')
         ;
@@ -312,8 +322,9 @@ public function testShouldMergeExtractedRoutesWithAlreadySetInCollection()
         $processor = $this->createTopicSubscriberProcessor(['fooTopic']);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.clients', ['default']);
-        $container->setDefinition('enqueue.client.default.route_collection', $routeCollection);
+        $container->setParameter('enqueue.clients', ['foo']);
+        $container->setParameter('enqueue.default_client', 'foo');
+        $container->setDefinition('enqueue.client.foo.route_collection', $routeCollection);
         $container->register('aFooProcessor', get_class($processor))
             ->addTag('enqueue.topic_subscriber')
         ;
diff --git a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/ClientFactoryTest.php b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/ClientFactoryTest.php
index b87245469..cac1805ce 100644
--- a/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/ClientFactoryTest.php
+++ b/pkg/enqueue/Tests/Symfony/Client/DependencyInjection/ClientFactoryTest.php
@@ -17,13 +17,6 @@ public function testShouldBeFinal()
         $this->assertClassFinal(ClientFactory::class);
     }
 
-    public function testShouldAllowGetNameSetInConstructor()
-    {
-        $transport = new ClientFactory('aName');
-
-        $this->assertEquals('aName', $transport->getName());
-    }
-
     public function testThrowIfEmptyNameGivenOnConstruction()
     {
         $this->expectException(\InvalidArgumentException::class);
diff --git a/pkg/enqueue/Tests/Symfony/ContainerProcessorRegistryTest.php b/pkg/enqueue/Tests/Symfony/ContainerProcessorRegistryTest.php
index bb3cacb53..fe84c2e20 100644
--- a/pkg/enqueue/Tests/Symfony/ContainerProcessorRegistryTest.php
+++ b/pkg/enqueue/Tests/Symfony/ContainerProcessorRegistryTest.php
@@ -69,7 +69,7 @@ public function testThrowErrorIfServiceDoesNotImplementProcessorReturnType()
         $registry = new ContainerProcessorRegistry($containerMock);
 
         $this->expectException(\TypeError::class);
-        $this->expectExceptionMessage('Return value of Enqueue\Symfony\ContainerProcessorRegistry::get() must implement interface Interop\Queue\Processor, instance of stdClass returned');
+        $this->expectExceptionMessage('Return value of Enqueue\Symfony\ContainerProcessorRegistry::get() must implement interface Interop\Queue\PsrProcessor, instance of stdClass returned');
         $registry->get('processor-name');
     }
 
diff --git a/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildConsumptionExtensionsPassTest.php b/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildConsumptionExtensionsPassTest.php
index e44272dff..b26b4481f 100644
--- a/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildConsumptionExtensionsPassTest.php
+++ b/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildConsumptionExtensionsPassTest.php
@@ -43,6 +43,7 @@ public function testThrowsIfNoConsumptionExtensionsServiceFoundForConfiguredTran
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.transports', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_transport', 'foo');
 
         $pass = new BuildConsumptionExtensionsPass();
 
@@ -57,14 +58,15 @@ public function testShouldRegisterTransportExtension()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['aName']);
-        $container->setDefinition('enqueue.transport.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
-            ->addTag('enqueue.transport.consumption_extension', ['transport' => 'aName'])
+            ->addTag('enqueue.transport.consumption_extension', ['transport' => 'foo'])
         ;
         $container->register('aBarExtension', ExtensionInterface::class)
-            ->addTag('enqueue.transport.consumption_extension', ['transport' => 'aName'])
+            ->addTag('enqueue.transport.consumption_extension', ['transport' => 'foo'])
         ;
 
         $pass = new BuildConsumptionExtensionsPass();
@@ -83,11 +85,12 @@ public function testShouldIgnoreOtherTransportExtensions()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['aName']);
-        $container->setDefinition('enqueue.transport.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
-            ->addTag('enqueue.transport.consumption_extension', ['transport' => 'aName'])
+            ->addTag('enqueue.transport.consumption_extension', ['transport' => 'foo'])
         ;
         $container->register('aBarExtension', ExtensionInterface::class)
             ->addTag('enqueue.transport.consumption_extension', ['transport' => 'anotherName'])
@@ -108,8 +111,9 @@ public function testShouldAddExtensionIfTransportAll()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['aName']);
-        $container->setDefinition('enqueue.transport.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.transport.consumption_extension', ['transport' => 'all'])
@@ -133,8 +137,9 @@ public function testShouldTreatTagsWithoutTransportAsDefaultTransport()
         $extensions->addArgument([]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['default']);
-        $container->setDefinition('enqueue.transport.default.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.transport.consumption_extension')
@@ -156,11 +161,12 @@ public function testShouldTreatTagsWithoutTransportAsDefaultTransport()
     public function testShouldOrderExtensionsByPriority()
     {
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['default']);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
 
         $extensions = new Definition();
         $extensions->addArgument([]);
-        $container->setDefinition('enqueue.transport.default.consumption_extensions', $extensions);
+        $container->setDefinition('enqueue.transport.foo.consumption_extensions', $extensions);
 
         $extension = new Definition();
         $extension->addTag('enqueue.transport.consumption_extension', ['priority' => 6]);
@@ -188,11 +194,12 @@ public function testShouldOrderExtensionsByPriority()
     public function testShouldAssumePriorityZeroIfPriorityIsNotSet()
     {
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['default']);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
 
         $extensions = new Definition();
         $extensions->addArgument([]);
-        $container->setDefinition('enqueue.transport.default.consumption_extensions', $extensions);
+        $container->setDefinition('enqueue.transport.foo.consumption_extensions', $extensions);
 
         $extension = new Definition();
         $extension->addTag('enqueue.transport.consumption_extension');
@@ -226,8 +233,9 @@ public function testShouldMergeWithAddedPreviously()
         ]);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['aName']);
-        $container->setDefinition('enqueue.transport.aName.consumption_extensions', $extensions);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.consumption_extensions', $extensions);
 
         $container->register('aFooExtension', ExtensionInterface::class)
             ->addTag('enqueue.transport.consumption_extension')
@@ -240,10 +248,7 @@ public function testShouldMergeWithAddedPreviously()
         $pass->process($container);
 
         $this->assertInternalType('array', $extensions->getArgument(0));
-        $this->assertEquals([
-            'aBarExtension' => 'aBarServiceIdAddedPreviously',
-            'aOloloExtension' => 'aOloloServiceIdAddedPreviously',
-        ], $extensions->getArgument(0));
+        $this->assertCount(4, $extensions->getArgument(0));
     }
 
     public function testShouldRegisterProcessorWithMatchedNameToCorrespondingRegistries()
@@ -256,6 +261,7 @@ public function testShouldRegisterProcessorWithMatchedNameToCorrespondingRegistr
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.transports', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_transport', 'foo');
         $container->setDefinition('enqueue.transport.foo.consumption_extensions', $fooExtensions);
         $container->setDefinition('enqueue.transport.bar.consumption_extensions', $barExtensions);
 
diff --git a/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildProcessorRegistryPassTest.php b/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildProcessorRegistryPassTest.php
index e9b9c7d71..d122e044c 100644
--- a/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildProcessorRegistryPassTest.php
+++ b/pkg/enqueue/Tests/Symfony/DependencyInjection/BuildProcessorRegistryPassTest.php
@@ -44,6 +44,7 @@ public function testThrowsIfNoRegistryServiceFoundForConfiguredTransport()
     {
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.transports', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_transport', 'baz');
 
         $pass = new BuildProcessorRegistryPass();
 
@@ -59,6 +60,7 @@ public function testShouldRegisterProcessorWithMatchedName()
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
         $container->setDefinition('enqueue.transport.foo.processor_registry', $registry);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.transport.processor', ['transport' => 'foo'])
@@ -88,6 +90,7 @@ public function testShouldRegisterProcessorWithMatchedNameToCorrespondingRegistr
 
         $container = new ContainerBuilder();
         $container->setParameter('enqueue.transports', ['foo', 'bar']);
+        $container->setParameter('enqueue.default_transport', 'foo');
         $container->setDefinition('enqueue.transport.foo.processor_registry', $fooRegistry);
         $container->setDefinition('enqueue.transport.bar.processor_registry', $barRegistry);
         $container->register('aFooProcessor', 'aProcessorClass')
@@ -118,8 +121,9 @@ public function testShouldRegisterProcessorWithoutNameToDefaultTransport()
         $registry->addArgument(null);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['default']);
-        $container->setDefinition('enqueue.transport.default.processor_registry', $registry);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.processor_registry', $registry);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.transport.processor', [])
         ;
@@ -144,8 +148,9 @@ public function testShouldRegisterProcessorIfTransportNameEqualsAll()
         $registry->addArgument(null);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['default']);
-        $container->setDefinition('enqueue.transport.default.processor_registry', $registry);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.processor_registry', $registry);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.transport.processor', ['transport' => 'all'])
         ;
@@ -170,8 +175,9 @@ public function testShouldRegisterWithCustomProcessorName()
         $registry->addArgument(null);
 
         $container = new ContainerBuilder();
-        $container->setParameter('enqueue.transports', ['default']);
-        $container->setDefinition('enqueue.transport.default.processor_registry', $registry);
+        $container->setParameter('enqueue.transports', ['foo']);
+        $container->setParameter('enqueue.default_transport', 'foo');
+        $container->setDefinition('enqueue.transport.foo.processor_registry', $registry);
         $container->register('aFooProcessor', 'aProcessorClass')
             ->addTag('enqueue.transport.processor', ['processor' => 'customProcessorName'])
         ;
diff --git a/pkg/enqueue/Tests/Symfony/DependencyInjection/TransportFactoryTest.php b/pkg/enqueue/Tests/Symfony/DependencyInjection/TransportFactoryTest.php
index 7e021ca03..6cc02b697 100644
--- a/pkg/enqueue/Tests/Symfony/DependencyInjection/TransportFactoryTest.php
+++ b/pkg/enqueue/Tests/Symfony/DependencyInjection/TransportFactoryTest.php
@@ -27,13 +27,6 @@ public function testShouldBeFinal()
         $this->assertClassFinal(TransportFactory::class);
     }
 
-    public function testShouldAllowGetNameSetInConstructor()
-    {
-        $transport = new TransportFactory('aName');
-
-        $this->assertEquals('aName', $transport->getName());
-    }
-
     public function testThrowIfEmptyNameGivenOnConstruction()
     {
         $this->expectException(\InvalidArgumentException::class);
diff --git a/pkg/enqueue/composer.json b/pkg/enqueue/composer.json
index fc42d772b..31b2159fd 100644
--- a/pkg/enqueue/composer.json
+++ b/pkg/enqueue/composer.json
@@ -7,8 +7,8 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/amqp-interop": "0.8.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/amqp-interop": "^0.8",
+        "queue-interop/queue-interop": "^0.7",
         "enqueue/null": "0.9.x-dev",
         "enqueue/dsn": "0.9.x-dev",
         "ramsey/uuid": "^2|^3.5",
diff --git a/pkg/fs/composer.json b/pkg/fs/composer.json
index 13d3df8a7..cb7cd4732 100644
--- a/pkg/fs/composer.json
+++ b/pkg/fs/composer.json
@@ -7,7 +7,7 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "enqueue/dsn": "0.9.x-dev",
         "symfony/filesystem": "^3.4|^4",
         "makasim/temp-file": "^0.2@stable"
@@ -16,7 +16,7 @@
         "phpunit/phpunit": "~5.5",
         "enqueue/null": "0.9.x-dev",
         "enqueue/test": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev",
+        "queue-interop/queue-spec": "^0.6",
         "symfony/dependency-injection": "^3.4|^4"
     },
     "support": {
diff --git a/pkg/gearman/composer.json b/pkg/gearman/composer.json
index 52750af3d..e23162405 100644
--- a/pkg/gearman/composer.json
+++ b/pkg/gearman/composer.json
@@ -8,13 +8,13 @@
     "require": {
         "php": "^7.1.3",
         "ext-gearman": "^2.0",
-        "queue-interop/queue-interop": "0.7.x-dev"
+        "queue-interop/queue-interop": "^0.7"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/gps/composer.json b/pkg/gps/composer.json
index aede85d7f..bb37b07e3 100644
--- a/pkg/gps/composer.json
+++ b/pkg/gps/composer.json
@@ -7,14 +7,14 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "google/cloud-pubsub": "^1.0",
         "enqueue/dsn": "0.9.x-dev"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/job-queue/composer.json b/pkg/job-queue/composer.json
index 7ea67465e..54efca4a4 100644
--- a/pkg/job-queue/composer.json
+++ b/pkg/job-queue/composer.json
@@ -9,7 +9,7 @@
         "php": "^7.1.3",
         "enqueue/enqueue": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "doctrine/orm": "~2.4"
     },
     "require-dev": {
diff --git a/pkg/mongodb/composer.json b/pkg/mongodb/composer.json
index 11bd5ae24..b3afedb03 100644
--- a/pkg/mongodb/composer.json
+++ b/pkg/mongodb/composer.json
@@ -11,13 +11,13 @@
   "license": "MIT",
   "require": {
     "php": "^7.1.3",
-    "queue-interop/queue-interop": "0.7.x-dev",
+    "queue-interop/queue-interop": "^0.7",
     "mongodb/mongodb": "^1.2",
     "ext-mongodb": "^1.3"
   },
   "require-dev": {
     "phpunit/phpunit": "~5.4.0",
-    "queue-interop/queue-spec": "0.6.x-dev",
+    "queue-interop/queue-spec": "^0.6",
     "enqueue/test": "0.9.x-dev",
     "enqueue/null": "0.9.x-dev"
   },
diff --git a/pkg/monitoring/Symfony/DependencyInjection/MonitoringFactory.php b/pkg/monitoring/Symfony/DependencyInjection/MonitoringFactory.php
index 201bfa569..f32946d77 100644
--- a/pkg/monitoring/Symfony/DependencyInjection/MonitoringFactory.php
+++ b/pkg/monitoring/Symfony/DependencyInjection/MonitoringFactory.php
@@ -18,6 +18,8 @@
  */
 final class MonitoringFactory
 {
+    public const MODULE = 'monitoring';
+
     /**
      * @var DiUtils
      */
@@ -29,7 +31,7 @@ public function __construct(string $name)
             throw new \InvalidArgumentException('The name could not be empty.');
         }
 
-        $this->diUtils = DiUtils::create('monitoring', $name);
+        $this->diUtils = DiUtils::create(self::MODULE, $name);
     }
 
     public static function getConfiguration(string $name = 'monitoring'): ArrayNodeDefinition
diff --git a/pkg/null/composer.json b/pkg/null/composer.json
index e17435633..cb900e1cd 100644
--- a/pkg/null/composer.json
+++ b/pkg/null/composer.json
@@ -7,12 +7,12 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/queue-interop": "0.7.x-dev"
+        "queue-interop/queue-interop": "^0.7"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.5",
         "enqueue/test": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/pheanstalk/composer.json b/pkg/pheanstalk/composer.json
index dcf5408c8..38ea2ee80 100644
--- a/pkg/pheanstalk/composer.json
+++ b/pkg/pheanstalk/composer.json
@@ -8,13 +8,13 @@
     "require": {
         "php": "^7.1.3",
         "pda/pheanstalk": "^3",
-        "queue-interop/queue-interop": "0.7.x-dev"
+        "queue-interop/queue-interop": "^0.7"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/rdkafka/composer.json b/pkg/rdkafka/composer.json
index 18374e108..9ec0d2f20 100644
--- a/pkg/rdkafka/composer.json
+++ b/pkg/rdkafka/composer.json
@@ -8,13 +8,13 @@
     "require": {
         "php": "^7.1.3",
         "ext-rdkafka": "^3.0.3",
-        "queue-interop/queue-interop": "0.7.x-dev"
+        "queue-interop/queue-interop": "^0.7"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev",
+        "queue-interop/queue-spec": "^0.6",
         "kwn/php-rdkafka-stubs": "^1.0.2"
     },
     "support": {
diff --git a/pkg/redis/composer.json b/pkg/redis/composer.json
index 73b2236a3..41931ffa8 100644
--- a/pkg/redis/composer.json
+++ b/pkg/redis/composer.json
@@ -7,7 +7,7 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "enqueue/dsn": "0.9.x-dev",
         "ramsey/uuid": "^3"
     },
@@ -16,7 +16,7 @@
         "predis/predis": "^1.1",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/simple-client/composer.json b/pkg/simple-client/composer.json
index 4f6c07a55..e204c0586 100644
--- a/pkg/simple-client/composer.json
+++ b/pkg/simple-client/composer.json
@@ -8,8 +8,8 @@
     "require": {
         "php": "^7.1.3",
         "enqueue/enqueue": "0.9.x-dev",
-        "queue-interop/amqp-interop": "0.8.x-dev",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/amqp-interop": "^0.8",
+        "queue-interop/queue-interop": "^0.7",
         "symfony/config": "^3.4|^4"
     },
     "require-dev": {
diff --git a/pkg/sqs/composer.json b/pkg/sqs/composer.json
index eac171369..c6c4d07fe 100644
--- a/pkg/sqs/composer.json
+++ b/pkg/sqs/composer.json
@@ -7,14 +7,14 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "enqueue/dsn": "0.9.x-dev",
         "aws/aws-sdk-php": "~3.26"
     },
     "require-dev": {
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/stomp/composer.json b/pkg/stomp/composer.json
index 28e73f1ee..ba79e4c2f 100644
--- a/pkg/stomp/composer.json
+++ b/pkg/stomp/composer.json
@@ -9,7 +9,7 @@
         "php": "^7.1.3",
         "enqueue/dsn": "0.9.x-dev",
         "stomp-php/stomp-php": "^4",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "php-http/guzzle6-adapter": "^1.1",
         "php-http/client-common": "^1.7@dev",
         "richardfullmer/rabbitmq-management-api": "^2.0"
@@ -18,7 +18,7 @@
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",
diff --git a/pkg/wamp/composer.json b/pkg/wamp/composer.json
index edb1bcc86..62a48c735 100644
--- a/pkg/wamp/composer.json
+++ b/pkg/wamp/composer.json
@@ -7,7 +7,7 @@
     "license": "MIT",
     "require": {
         "php": "^7.1.3",
-        "queue-interop/queue-interop": "0.7.x-dev",
+        "queue-interop/queue-interop": "^0.7",
         "enqueue/dsn": "0.9.x-dev",
         "thruway/pawl-transport": "^0.5.0",
         "voryx/thruway": "^0.5.3"
@@ -16,7 +16,7 @@
         "phpunit/phpunit": "~5.4.0",
         "enqueue/test": "0.9.x-dev",
         "enqueue/null": "0.9.x-dev",
-        "queue-interop/queue-spec": "0.6.x-dev"
+        "queue-interop/queue-spec": "^0.6"
     },
     "support": {
         "email": "opensource@forma-pro.com",