diff --git a/force_bdss/core_plugins/dummy/dummy_plugin.py b/force_bdss/core_plugins/dummy/dummy_plugin.py
index c8020e198a858cfb312d0080c56a1f31b06c1d26..766186f03a3330002830dad4c180f9098a88bfe2 100644
--- a/force_bdss/core_plugins/dummy/dummy_plugin.py
+++ b/force_bdss/core_plugins/dummy/dummy_plugin.py
@@ -3,6 +3,7 @@ from .dummy_notification_listener.dummy_notification_listener_factory import (
     DummyNotificationListenerFactory
 )
 from .csv_extractor.csv_extractor_factory import CSVExtractorFactory
+from .power_evaluator.power_evaluator_factory import PowerEvaluatorFactory
 from .kpi_adder.kpi_adder_factory import KPIAdderFactory
 from .dummy_dakota.dakota_factory import DummyDakotaFactory
 from .dummy_data_source.dummy_data_source_factory import DummyDataSourceFactory
@@ -16,7 +17,8 @@ class DummyPlugin(BaseExtensionPlugin):
 
     def _data_source_factories_default(self):
         return [DummyDataSourceFactory(self),
-                CSVExtractorFactory(self)]
+                CSVExtractorFactory(self),
+                PowerEvaluatorFactory(self)]
 
     def _mco_factories_default(self):
         return [DummyDakotaFactory(self)]
diff --git a/force_bdss/core_plugins/dummy/power_evaluator/__init__.py b/force_bdss/core_plugins/dummy/power_evaluator/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_data_source.py b/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_data_source.py
new file mode 100644
index 0000000000000000000000000000000000000000..d8eb722ea6e3f485d3311d869a4709b2cdc5d3cb
--- /dev/null
+++ b/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_data_source.py
@@ -0,0 +1,24 @@
+import math
+
+from force_bdss.api import BaseDataSource, DataValue
+from force_bdss.core.slot import Slot
+
+
+class PowerEvaluatorDataSource(BaseDataSource):
+    def run(self, model, parameters):
+        x = parameters[0].value
+        return [
+            DataValue(
+                type=model.cuba_type_out,
+                value=math.pow(x, model.power)
+            )]
+
+    def slots(self, model):
+        return (
+            (
+                Slot(type=model.cuba_type_in),
+            ),
+            (
+                Slot(type=model.cuba_type_out),
+            )
+        )
diff --git a/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_factory.py b/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_factory.py
new file mode 100644
index 0000000000000000000000000000000000000000..ebd3aacf8fcd9b6a5e229756ad64a13ce9d97087
--- /dev/null
+++ b/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_factory.py
@@ -0,0 +1,21 @@
+from traits.api import String
+
+from force_bdss.api import factory_id, BaseDataSourceFactory
+
+from .power_evaluator_model import PowerEvaluatorModel
+from .power_evaluator_data_source import PowerEvaluatorDataSource
+
+
+class PowerEvaluatorFactory(BaseDataSourceFactory):
+    id = String(factory_id("enthought", "power_evaluator"))
+
+    name = String("Power Evaluator")
+
+    def create_model(self, model_data=None):
+        if model_data is None:
+            model_data = {}
+
+        return PowerEvaluatorModel(self, **model_data)
+
+    def create_data_source(self):
+        return PowerEvaluatorDataSource(self)
diff --git a/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_model.py b/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..6383bbf05183ec604f6f39b610c136a37036740c
--- /dev/null
+++ b/force_bdss/core_plugins/dummy/power_evaluator/power_evaluator_model.py
@@ -0,0 +1,13 @@
+from traits.api import Float, String, on_trait_change
+
+from force_bdss.api import BaseDataSourceModel
+
+
+class PowerEvaluatorModel(BaseDataSourceModel):
+    power = Float()
+    cuba_type_in = String()
+    cuba_type_out = String()
+
+    @on_trait_change("cuba_type_in,cuba_type_out")
+    def _notify_changes_slots(self):
+        self.changes_slots = True
diff --git a/force_bdss/core_plugins/dummy/power_evaluator/tests/__init__.py b/force_bdss/core_plugins/dummy/power_evaluator/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/force_bdss/core_plugins/dummy/power_evaluator/tests/test_power_evaluator_data_source.py b/force_bdss/core_plugins/dummy/power_evaluator/tests/test_power_evaluator_data_source.py
new file mode 100644
index 0000000000000000000000000000000000000000..3b52ed1b6acec32764fc23a0ce06952320b45bb6
--- /dev/null
+++ b/force_bdss/core_plugins/dummy/power_evaluator/tests/test_power_evaluator_data_source.py
@@ -0,0 +1,52 @@
+import unittest
+
+from force_bdss.core.data_value import DataValue
+from force_bdss.core.slot import Slot
+from force_bdss.core_plugins.dummy.power_evaluator.power_evaluator_data_source import PowerEvaluatorDataSource  # noqa
+from force_bdss.core_plugins.dummy.power_evaluator.power_evaluator_model import PowerEvaluatorModel  # noqa
+from force_bdss.data_sources.base_data_source_factory import \
+    BaseDataSourceFactory
+from force_bdss.tests import fixtures
+
+try:
+    import mock
+except ImportError:
+    from unittest import mock
+
+
+class TestPowerEvaluatorDataSource(unittest.TestCase):
+    def setUp(self):
+        self.factory = mock.Mock(spec=BaseDataSourceFactory)
+
+    def test_initialization(self):
+        ds = PowerEvaluatorDataSource(self.factory)
+        self.assertEqual(ds.factory, self.factory)
+
+    def test_run(self):
+        ds = PowerEvaluatorDataSource(self.factory)
+        model = PowerEvaluatorModel(self.factory)
+        model.power = 2
+        mock_params = [DataValue(value=5, type="METER")]
+        result = ds.run(model, mock_params)
+        self.assertIsInstance(result, list)
+        self.assertEqual(len(result), 1)
+        self.assertIsInstance(result[0], DataValue)
+        self.assertEqual(result[0].value, 25)
+
+    def test_run_with_exception(self):
+        ds = PowerEvaluatorDataSource(self.factory)
+        model = PowerEvaluatorModel(self.factory)
+        mock_params = []
+        model.power = 3
+        with self.assertRaises(IndexError):
+            ds.run(model, mock_params)
+
+    def test_slots(self):
+        ds = PowerEvaluatorDataSource(self.factory)
+        model = PowerEvaluatorModel(self.factory)
+        slots = ds.slots(model)
+        self.assertEqual(len(slots), 2)
+        self.assertEqual(len(slots[0]), 1)
+        self.assertEqual(len(slots[1]), 1)
+        self.assertIsInstance(slots[0][0], Slot)
+        self.assertIsInstance(slots[1][0], Slot)
diff --git a/force_bdss/core_plugins/dummy/power_evaluator/tests/test_power_evaluator_factory.py b/force_bdss/core_plugins/dummy/power_evaluator/tests/test_power_evaluator_factory.py
new file mode 100644
index 0000000000000000000000000000000000000000..5df8c8f9e796042aaa8a8e0b8c4bd4500dfe4ea3
--- /dev/null
+++ b/force_bdss/core_plugins/dummy/power_evaluator/tests/test_power_evaluator_factory.py
@@ -0,0 +1,22 @@
+import unittest
+
+from force_bdss.core_plugins.dummy.tests.data_source_factory_test_mixin \
+    import DataSourceFactoryTestMixin
+from force_bdss.core_plugins.dummy.power_evaluator.power_evaluator_factory import PowerEvaluatorFactory  # noqa
+from force_bdss.core_plugins.dummy.power_evaluator.power_evaluator_data_source import PowerEvaluatorDataSource  # noqa
+from force_bdss.core_plugins.dummy.power_evaluator.power_evaluator_model import PowerEvaluatorModel  # noqa
+
+
+class TestPowerEvaluatorFactory(DataSourceFactoryTestMixin,
+                                unittest.TestCase):
+    @property
+    def factory_class(self):
+        return PowerEvaluatorFactory
+
+    @property
+    def model_class(self):
+        return PowerEvaluatorModel
+
+    @property
+    def data_source_class(self):
+        return PowerEvaluatorDataSource