diff --git a/cml/domain/data_source.py b/cml/domain/data_source.py
index 68cf58a8b02b3bfc7d3c16e3617f588ac5dad30c..08656408f714f599f66f9263d4e2680785995a26 100644
--- a/cml/domain/data_source.py
+++ b/cml/domain/data_source.py
@@ -63,8 +63,9 @@ class DataSource:
     def learnblocks(self):
         for block in self:
             learnblock = self.__learnblock_identifier.identify(block)
-            self._flip_source_halde_flags(learnblock.indexes)
-            yield learnblock
+            if learnblock:
+                self._flip_source_halde_flags(learnblock.indexes)
+                yield learnblock
 
     @log_block_processing
     def __next__(self):
@@ -131,6 +132,7 @@ class Preprocessor:
         return table
 
     def _drop_irrelevant_columns(self, table):
+        # TODO (dmt): Features get dropped and not kept! Fix settings!
         features_to_be_removed = [table.get_column_name_by_index(i)
                                   for i in self.settings.set_features]
         for column in features_to_be_removed:
@@ -181,8 +183,14 @@ class LearnblockIdentifier:
                 already_seen.add(value_pair)
                 kw = {args[0]: value_pair[0], args[1]: value_pair[1]}
                 if args[0] == "Sigma" and args[1] == "Z":
-                    for block in self._get_sigma_zeta_relatives(block, **kw):
-                        yield block
+                    try:
+                        for block in self._get_sigma_zeta_relatives(block,
+                                                                    **kw):
+                            yield block
+                    except ValueError as e:
+                        # TODO (dmt): Provide mechanism for logging errors!
+                        continue
+
                 else:
                     yield block.get_values(**kw)