diff --git a/cml/ports/source_adapters.py b/cml/ports/source_adapters.py
index d769fbc6a4e0238076a8a3e070e23fcbf38b27d4..a183a875ba737a29a846a110ef1f9a0fbe7fa279 100644
--- a/cml/ports/source_adapters.py
+++ b/cml/ports/source_adapters.py
@@ -37,14 +37,35 @@ class Adapter(ABC):
 
 
 # TODO (dmt): Provide common base class or pandas operations.
-
 class PandasBlock:
-    def __init__(self, data_block):
+    _LAST_THREE_COLUMNS = 3
+
+    def __init__(self, data_block, relatives=None):
         self.__data_block = data_block
 
     def __str__(self):
         return str(self.__data_block)
 
+    def __getitem__(self, item):
+        return self.__data_block.iloc[item][:self.rows-self._LAST_THREE_COLUMNS]
+
+    def __len__(self):
+        return self.__data_block.shape[0]
+
+    def set_labels(self, labels):
+        data_frame = self.__data_block["Z"] = labels
+        return PandasBlock(data_frame, self.relatives)
+
+    @property
+    def rows(self):
+        return self.__data_block.shape[1]
+
+    def new_block_from(self, column_values):
+        data_from = self.__data_block.loc[self.__data_block["T"].isin(
+            column_values)]
+
+        return PandasBlock(data_from)
+
     def get_duplicated_pairs(self, *args):
         bool_series = self.__data_block.duplicated(subset=[args[0], args[1]])