diff --git a/force_bdss/api.py b/force_bdss/api.py
index 4f54ab3b3a75df5b49f44f94053aeb940561daa0..7480b1b5ec447f3978df3421800be225de92f510 100644
--- a/force_bdss/api.py
+++ b/force_bdss/api.py
@@ -3,14 +3,11 @@ from .ids import bundle_id, plugin_id  # noqa
 from .core.data_value import DataValue  # noqa
 
 from .data_sources.base_data_source_model import BaseDataSourceModel  # noqa
-from .data_sources.data_source_result import DataSourceResult  # noqa
-from .data_sources.data_source_parameters import DataSourceParameters  # noqa
 from .data_sources.base_data_source import BaseDataSource  # noqa
 from .data_sources.base_data_source_bundle import BaseDataSourceBundle  # noqa
 from .data_sources.i_data_source_bundle import IDataSourceBundle  # noqa
 
 from .kpi.base_kpi_calculator import BaseKPICalculator  # noqa
-from .kpi.kpi_calculator_result import KPICalculatorResult  # noqa
 from .kpi.base_kpi_calculator_model import BaseKPICalculatorModel  # noqa
 from .kpi.base_kpi_calculator_bundle import BaseKPICalculatorBundle  # noqa
 from .kpi.i_kpi_calculator_bundle import IKPICalculatorBundle  # noqa
diff --git a/force_bdss/core_evaluation_driver.py b/force_bdss/core_evaluation_driver.py
index 8cfe761cd513ce973186688013f4dcea56f382c6..d6f71816bc0aaf0317feae991de453acc6437f30 100644
--- a/force_bdss/core_evaluation_driver.py
+++ b/force_bdss/core_evaluation_driver.py
@@ -37,12 +37,12 @@ class CoreEvaluationDriver(BaseCoreDriver):
         for ds_model in workflow.data_sources:
             ds_bundle = ds_model.bundle
             data_source = ds_bundle.create_data_source()
-            ds_results.append(data_source.run(ds_model, mco_data_values))
+            ds_results.extend(data_source.run(ds_model, mco_data_values))
 
         kpi_results = []
         for kpic_model in workflow.kpi_calculators:
             kpic_bundle = kpic_model.bundle
             kpi_calculator = kpic_bundle.create_kpi_calculator()
-            kpi_results.append(kpi_calculator.run(kpic_model, ds_results))
+            kpi_results.extend(kpi_calculator.run(kpic_model, ds_results))
 
         mco_communicator.send_to_mco(mco_model, kpi_results)
diff --git a/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py b/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py
index d159906bd9030b8d58ebaed3ff462cb8bb7c32d5..3b4858414af708ccc4419ae870c68d48b028d2e0 100644
--- a/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py
+++ b/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py
@@ -18,5 +18,5 @@ class CSVExtractorDataSource(BaseDataSource):
                         )
                     ]
 
-                return None
-            return None
+                return []
+            return []
diff --git a/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py b/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py
index 1be1beb2559ce8aaa208b6bad69ba94718cb7b4a..0df1be2d814261327462b7e82a070325b088a9a2 100644
--- a/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py
+++ b/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py
@@ -1,12 +1,12 @@
 import unittest
 
+from force_bdss.core.data_value import DataValue
 from force_bdss.core_plugins.dummy.csv_extractor.csv_extractor_data_source \
     import CSVExtractorDataSource
 from force_bdss.core_plugins.dummy.csv_extractor.csv_extractor_model import \
     CSVExtractorModel
 from force_bdss.data_sources.base_data_source_bundle import \
     BaseDataSourceBundle
-from force_bdss.data_sources.data_source_result import DataSourceResult
 from force_bdss.tests import fixtures
 
 try:
@@ -27,7 +27,11 @@ class TestCSVExtractorDataSource(unittest.TestCase):
         ds = CSVExtractorDataSource(self.bundle)
         model = CSVExtractorModel(self.bundle)
         model.filename = fixtures.get("foo.csv")
-        mock_params = mock.Mock()
-        mock_params.values = [1.0]
+        model.row = 3
+        model.column = 5
+        mock_params = []
         result = ds.run(model, mock_params)
-        self.assertIsInstance(result, DataSourceResult)
+        self.assertIsInstance(result, list)
+        self.assertEqual(len(result), 1)
+        self.assertIsInstance(result[0], DataValue)
+        self.assertEqual(result[0].value, 42)
diff --git a/force_bdss/core_plugins/dummy/dummy_dakota/dakota_communicator.py b/force_bdss/core_plugins/dummy/dummy_dakota/dakota_communicator.py
index 958d5c2068e7f4dd99620b06372e016abeef207e..e1d10fda52d41edb50250fb31efde7be6c694935 100644
--- a/force_bdss/core_plugins/dummy/dummy_dakota/dakota_communicator.py
+++ b/force_bdss/core_plugins/dummy/dummy_dakota/dakota_communicator.py
@@ -17,8 +17,6 @@ class DummyDakotaCommunicator(BaseMCOCommunicator):
             for type_, name, value in zip(
                 value_types, value_names, values)]
 
-    def send_to_mco(self, model, kpi_results):
-        data = " ".join(
-            [" ".join(list(map(str, r.values.tolist()))) for r in kpi_results]
-        )
+    def send_to_mco(self, model, data_values):
+        data = " ".join([str(dv.value) for dv in data_values])
         sys.stdout.write(data)
diff --git a/force_bdss/core_plugins/dummy/dummy_dakota/tests/test_dakota_communicator.py b/force_bdss/core_plugins/dummy/dummy_dakota/tests/test_dakota_communicator.py
index 6e74d744f66e52cbb510bacde7a3879f0d200818..7954507babdd3bf3112ff8637fbd65b0056ccaa3 100644
--- a/force_bdss/core_plugins/dummy/dummy_dakota/tests/test_dakota_communicator.py
+++ b/force_bdss/core_plugins/dummy/dummy_dakota/tests/test_dakota_communicator.py
@@ -9,7 +9,6 @@ from envisage.plugin import Plugin
 
 from force_bdss.core_plugins.dummy.dummy_dakota.dakota_bundle import (
     DummyDakotaBundle)
-from force_bdss.data_sources.data_source_parameters import DataSourceParameters
 
 from force_bdss.mco.parameters.base_mco_parameter_factory import \
     BaseMCOParameterFactory
@@ -31,7 +30,7 @@ class TestDakotaCommunicator(unittest.TestCase):
             stdin.read.return_value = "1"
 
             data = comm.receive_from_mco(model)
-            self.assertIsInstance(data, DataSourceParameters)
-            self.assertEqual(len(data.value_names), 1)
-            self.assertEqual(len(data.value_types), 1)
-            self.assertEqual(len(data.values), 1)
+            self.assertIsInstance(data, list)
+            self.assertEqual(len(data), 1)
+            self.assertEqual(data[0].value, 1)
+            self.assertEqual(data[0].type, "")
diff --git a/force_bdss/core_plugins/dummy/dummy_kpi_calculator/dummy_kpi_calculator.py b/force_bdss/core_plugins/dummy/dummy_kpi_calculator/dummy_kpi_calculator.py
index f1a8a168935464c02064905cd5b21a937afeb0f6..bd104731babee708112797eebe991a1ca732504e 100644
--- a/force_bdss/core_plugins/dummy/dummy_kpi_calculator/dummy_kpi_calculator.py
+++ b/force_bdss/core_plugins/dummy/dummy_kpi_calculator/dummy_kpi_calculator.py
@@ -1,8 +1,6 @@
-from force_bdss.api import BaseKPICalculator, bundle_id
+from force_bdss.api import BaseKPICalculator
 
 
 class DummyKPICalculator(BaseKPICalculator):
-    id = bundle_id("enthought", "dummy_kpi_calculator")
-
     def run(self, model, data_source_results):
         return data_source_results
diff --git a/force_bdss/core_plugins/dummy/kpi_adder/kpi_adder_calculator.py b/force_bdss/core_plugins/dummy/kpi_adder/kpi_adder_calculator.py
index 2c24d6242a760c93956b3eb361517aad15566215..94128b30519bf6bcac5fc63e0f418cd758ea7f80 100644
--- a/force_bdss/core_plugins/dummy/kpi_adder/kpi_adder_calculator.py
+++ b/force_bdss/core_plugins/dummy/kpi_adder/kpi_adder_calculator.py
@@ -4,12 +4,12 @@ from force_bdss.api import BaseKPICalculator, DataValue
 class KPIAdderCalculator(BaseKPICalculator):
     def run(self, model, data_source_results):
         sum = 0.0
-        for ds_res in data_source_results:
-            for res in ds_res:
-                if res.type != model.cuba_type_in:
-                    continue
 
-                sum += res.value
+        for res in data_source_results:
+            if res.type != model.cuba_type_in:
+                continue
+
+            sum += res.value
 
         return [
             DataValue(
diff --git a/force_bdss/tests/test_core_evaluation_driver.py b/force_bdss/tests/test_core_evaluation_driver.py
index 5be1849eba262b3460f68ad49f8e284d9bd61e77..3ce84809480eb25565fb014814feed26888313e8 100644
--- a/force_bdss/tests/test_core_evaluation_driver.py
+++ b/force_bdss/tests/test_core_evaluation_driver.py
@@ -53,7 +53,7 @@ class NullMCOCommunicator(BaseMCOCommunicator):
         pass
 
     def receive_from_mco(self, model):
-        pass
+        return []
 
 
 class NullMCOBundle(BaseMCOBundle):
@@ -78,7 +78,7 @@ class NullKPICalculatorModel(BaseKPICalculatorModel):
 
 class NullKPICalculator(BaseKPICalculator):
     def run(self, model, data_source_results):
-        pass
+        return []
 
 
 class NullKPICalculatorBundle(BaseKPICalculatorBundle):
@@ -95,7 +95,7 @@ class NullDataSourceModel(BaseDataSourceModel):
 
 class NullDataSource(BaseDataSource):
     def run(self, model, parameters):
-        pass
+        return []
 
 
 class NullDataSourceBundle(BaseDataSourceBundle):