diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
index 220a64df857ca0f90966502568dfb55a7524aa1e..8732d1f553878dd8479c8925fc695a9750c21996 100644
--- a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
@@ -1,7 +1,9 @@
-from traits.api import HasStrictTraits, Int, String
+from traits.api import Int, String
 
+from force_bdss.data_sources.base_data_source_model import BaseDataSourceModel
 
-class CSVExtractorModel(HasStrictTraits):
+
+class CSVExtractorModel(BaseDataSourceModel):
     filename = String()
     row = Int()
     column = Int()
diff --git a/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py b/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py
index 159f873cf4f255d07a708d68dfeb9ca55b2dafcf..f343fdfedca04786a1c238e5fb4c1d7c916a29fd 100644
--- a/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py
+++ b/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py
@@ -1,7 +1,9 @@
-from traits.api import HasStrictTraits, String
+from traits.api import String
 
+from force_bdss.kpi.base_kpi_calculator_model import BaseKPICalculatorModel
 
-class KPIAdderModel(HasStrictTraits):
+
+class KPIAdderModel(BaseKPICalculatorModel):
     cuba_type_in = String()
     cuba_type_out = String()
 
diff --git a/force_bdss/core_plugins/test_mco/dakota/dakota_model.py b/force_bdss/core_plugins/test_mco/dakota/dakota_model.py
index fe7edcdc6cb3411945de29cdec4806e5cecce88f..55b3794b6b0b937e1a982169126d83b71be59dfa 100644
--- a/force_bdss/core_plugins/test_mco/dakota/dakota_model.py
+++ b/force_bdss/core_plugins/test_mco/dakota/dakota_model.py
@@ -1,7 +1,9 @@
-from traits.api import HasStrictTraits, List, String
+from traits.api import List, String
 
+from force_bdss.mco.base_mco_model import BaseMCOModel
 
-class DakotaModel(HasStrictTraits):
+
+class DakotaModel(BaseMCOModel):
     value_types = List(String)
 
     @classmethod
diff --git a/force_bdss/data_sources/base_data_source_model.py b/force_bdss/data_sources/base_data_source_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..d88d3adff6f7938b163a3369a38612864a9a2132
--- /dev/null
+++ b/force_bdss/data_sources/base_data_source_model.py
@@ -0,0 +1,9 @@
+import abc
+from traits.api import ABCHasStrictTraits
+
+
+class BaseDataSourceModel(ABCHasStrictTraits):
+    @classmethod
+    @abc.abstractmethod
+    def from_json(self, model_data):
+        pass
diff --git a/force_bdss/kpi/base_kpi_calculator_model.py b/force_bdss/kpi/base_kpi_calculator_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..9489b9b89ded2d98442b5f72052e2666673952a7
--- /dev/null
+++ b/force_bdss/kpi/base_kpi_calculator_model.py
@@ -0,0 +1,9 @@
+import abc
+from traits.has_traits import ABCHasStrictTraits
+
+
+class BaseKPICalculatorModel(ABCHasStrictTraits):
+    @classmethod
+    @abc.abstractmethod
+    def from_json(self, model_data):
+        pass
diff --git a/force_bdss/mco/base_mco_model.py b/force_bdss/mco/base_mco_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..3bf128cfb0f7132eed980a92cd8d39770233a097
--- /dev/null
+++ b/force_bdss/mco/base_mco_model.py
@@ -0,0 +1,9 @@
+import abc
+from traits.api import ABCHasStrictTraits
+
+
+class BaseMCOModel(ABCHasStrictTraits):
+    @classmethod
+    @abc.abstractmethod
+    def from_json(self, model_data):
+        pass