diff --git a/dynamic_entity_reference.services.yml b/dynamic_entity_reference.services.yml
index d00969a..02b1763 100644
--- a/dynamic_entity_reference.services.yml
+++ b/dynamic_entity_reference.services.yml
@@ -21,3 +21,11 @@ services:
   sqlite.dynamic_entity_reference.storage.create_column:
     class: Drupal\dynamic_entity_reference\Storage\IntColumnHandlerSQLite
     arguments: ['@database']
+  dynamic_entity_reference.entity.query.sql:
+    decorates: 'entity.query.sql'
+    class: Drupal\dynamic_entity_reference\Query\QueryFactory
+    arguments: ['@database']
+  dynamic_entity_reference.entity.query.sql.pgsql:
+    decorates: 'pgsql.entity.query.sql'
+    class: Drupal\dynamic_entity_reference\Query\PgsqlQueryFactory
+    arguments: ['@database']
diff --git a/src/DynamicEntityReferenceServiceProvider.php b/src/DynamicEntityReferenceServiceProvider.php
index 1b7b635..8f7695f 100644
--- a/src/DynamicEntityReferenceServiceProvider.php
+++ b/src/DynamicEntityReferenceServiceProvider.php
@@ -4,10 +4,6 @@ namespace Drupal\dynamic_entity_reference;
 
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Core\DependencyInjection\ServiceProviderBase;
-use Drupal\Core\Entity\Query\Sql\QueryFactory as BaseQueryFactory;
-use Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory as BasePgsqlQueryFactory;
-use Drupal\dynamic_entity_reference\Query\PgsqlQueryFactory;
-use Drupal\dynamic_entity_reference\Query\QueryFactory;
 use Symfony\Component\DependencyInjection\Definition;
 use Symfony\Component\DependencyInjection\Reference;
 
@@ -34,25 +30,6 @@ class DynamicEntityReferenceServiceProvider extends ServiceProviderBase {
       $service_definition->addTag('normalizer', ['priority' => 20]);
       $container->setDefinition('serializer.normalizer.entity.dynamic_entity_reference_item.hal', $service_definition);
     }
-    $map = [
-      'entity.query.sql' => [
-        'old' => BaseQueryFactory::class,
-        'new' => QueryFactory::class,
-      ],
-      'pgsql.entity.query.sql' => [
-        'old' => BasePgsqlQueryFactory::class,
-        'new' => PgsqlQueryFactory::class,
-      ],
-    ];
-    foreach ($map as $service_id => $data) {
-      if ($container->hasDefinition($service_id)) {
-        $service_definition = $container->getDefinition($service_id);
-        if ($service_definition->getClass() == $data['old']) {
-          $service_definition->setClass($data['new']);
-          $container->setDefinition($service_id, $service_definition);
-        }
-      }
-    }
   }
 
 }
diff --git a/src/Query/PgsqlQueryFactory.php b/src/Query/PgsqlQueryFactory.php
index 2666dae..5a97190 100644
--- a/src/Query/PgsqlQueryFactory.php
+++ b/src/Query/PgsqlQueryFactory.php
@@ -6,6 +6,8 @@ use Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory as BaseQueryFactory;
 
 /**
  * PostgreSQL specific entity query implementation.
+ *
+ * @see \Drupal\dynamic_entity_reference\Query\QueryFactory
  */
 class PgsqlQueryFactory extends BaseQueryFactory {
 
diff --git a/src/Query/QueryFactory.php b/src/Query/QueryFactory.php
index 1d85e03..c264f33 100644
--- a/src/Query/QueryFactory.php
+++ b/src/Query/QueryFactory.php
@@ -7,8 +7,12 @@ use Drupal\Core\Entity\Query\Sql\QueryFactory as BaseQueryFactory;
 /**
  * Factory class creating entity query objects for the SQL backend.
  *
+ * By extending and decorating the core query factory, the DER name-spaced
+ * Tables classes are used.
+ *
  * @see \Drupal\Core\Entity\Query\Sql\Query
  * @see \Drupal\Core\Entity\Query\Sql\QueryAggregate
+ * @see \Drupal\dynamic_entity_reference\Query\Tables
  */
 class QueryFactory extends BaseQueryFactory {
 
