diff --git a/hshetl/loaders.py b/hshetl/loaders.py
index 3b21faf87969d87aa2a7fe440a0927191af7d729..30b6017d46c93de203e5a75712a52cab8d77a8bd 100644
--- a/hshetl/loaders.py
+++ b/hshetl/loaders.py
@@ -132,6 +132,9 @@ class CsvLoader(AbstractLoader):
         self.dialect = dialect
         self._resolve_dialect()
 
+    def can_execute(self, connector):
+        '''Defines which connector can be handled by this extractor.'''
+        return isinstance(connector, FileConnector)
 
     def _update(self, data = []):
         '''This loader can not update records. Therefore only empty data is allowed'''
@@ -201,6 +204,10 @@ class SqlAlchemyLoader(AbstractLoader):
         self.table_name = table_name
         '''The name of the table where the records will be load.'''
 
+    def can_execute(self, connector):
+        '''Defines which connector can be handled by this extractor.'''
+        return isinstance(connector, SqlAlchemyConnector)
+
     def _execute(self, result):
         '''Executes the loading of data. Distinguishes between update, insert and delete'''
         self.table = Table(self.table_name,
@@ -299,6 +306,10 @@ class LdapLoader(AbstractLoader):
         self.objectClass = objectClass
         '''The objectClass of new inserted records.'''
 
+    def can_execute(self, connector):
+        '''Defines which connector can be handled by this extractor.'''
+        return isinstance(connector, LdapConnector)
+
     def _execute(self, result):
         '''Executes the loading of data. Distinguishes between update, insert and delete.'''
         logging.debug('Loads data: ' + self.__class__.__name__)