diff --git a/force_bdss/core/base_model.py b/force_bdss/core/base_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f4a778c3bc48c5e284622d7795e3ed7fb283e1d
--- /dev/null
+++ b/force_bdss/core/base_model.py
@@ -0,0 +1,14 @@
+from traits.api import ABCHasStrictTraits, Instance
+
+from force_bdss.core.base_factory import BaseFactory
+
+
+class BaseModel(ABCHasStrictTraits):
+    """Base class for all the models of all the factories."""
+
+    #: A reference to the creating factory, so that we can
+    #: retrieve it as the originating factory.
+    factory = Instance(BaseFactory, visible=False, transient=True)
+
+    def __init__(self, factory, *args, **kwargs):
+        super(BaseModel, self).__init__(factory=factory, *args, **kwargs)
diff --git a/force_bdss/data_sources/base_data_source_model.py b/force_bdss/data_sources/base_data_source_model.py
index a5df537c9faf7a7c8768dfc7d9e4c5b7a788ad97..7f49502bbd311a5a396199d54171984d2747a3c5 100644
--- a/force_bdss/data_sources/base_data_source_model.py
+++ b/force_bdss/data_sources/base_data_source_model.py
@@ -1,13 +1,14 @@
 from traits.api import (
-    ABCHasStrictTraits, Instance, List, Event, on_trait_change
+    Instance, List, Event, on_trait_change
 )
 
+from force_bdss.core.base_model import BaseModel
 from force_bdss.core.input_slot_info import InputSlotInfo
 from force_bdss.core.output_slot_info import OutputSlotInfo
 from force_bdss.data_sources.i_data_source_factory import IDataSourceFactory
 
 
-class BaseDataSourceModel(ABCHasStrictTraits):
+class BaseDataSourceModel(BaseModel):
     """Base class for the factory specific DataSource models.
     This model will also provide, through traits/traitsui magic the View
     that will appear in the workflow manager UI.
@@ -38,10 +39,6 @@ class BaseDataSourceModel(ABCHasStrictTraits):
     #: this and adapt the visual entries.
     changes_slots = Event()
 
-    def __init__(self, factory, *args, **kwargs):
-        self.factory = factory
-        super(BaseDataSourceModel, self).__init__(*args, **kwargs)
-
     def __getstate__(self):
         state = super(BaseDataSourceModel, self).__getstate__()
         state["input_slot_info"] = [
diff --git a/force_bdss/mco/base_mco_model.py b/force_bdss/mco/base_mco_model.py
index b39f88ef7f7d9e503759c6428dfc2df6b97e0346..b85a2704680a66a1e97024e1ddedc5b066260519 100644
--- a/force_bdss/mco/base_mco_model.py
+++ b/force_bdss/mco/base_mco_model.py
@@ -1,11 +1,12 @@
-from traits.api import ABCHasStrictTraits, Instance, List
+from traits.api import Instance, List
 
+from force_bdss.core.base_model import BaseModel
 from force_bdss.core.kpi_specification import KPISpecification
 from .parameters.base_mco_parameter import BaseMCOParameter
 from .i_mco_factory import IMCOFactory
 
 
-class BaseMCOModel(ABCHasStrictTraits):
+class BaseMCOModel(BaseModel):
     """Base class for the specific MCO models.
     This model will also provide, through traits/traitsui magic the View
     that will appear in the workflow manager UI.
@@ -14,16 +15,10 @@ class BaseMCOModel(ABCHasStrictTraits):
     """
     #: A reference to the creating factory, so that we can
     #: retrieve it as the originating factory.
-    factory = Instance(IMCOFactory,
-                       visible=False,
-                       transient=True)
+    factory = Instance(IMCOFactory, visible=False, transient=True)
 
     #: A list of the parameters for the MCO
     parameters = List(BaseMCOParameter, visible=False)
 
     #: A list of KPI specification objects and their objective.
     kpis = List(KPISpecification, visible=False)
-
-    def __init__(self, factory, *args, **kwargs):
-        self.factory = factory
-        super(BaseMCOModel, self).__init__(*args, **kwargs)
diff --git a/force_bdss/mco/parameters/base_mco_parameter.py b/force_bdss/mco/parameters/base_mco_parameter.py
index c073629a5278421c792dd2cdf94b58b932311f6d..084c7a946aa92caf4daed999368ad6caba23e8fc 100644
--- a/force_bdss/mco/parameters/base_mco_parameter.py
+++ b/force_bdss/mco/parameters/base_mco_parameter.py
@@ -1,11 +1,12 @@
-from traits.api import HasStrictTraits, String, Instance
+from traits.api import String, Instance
 
+from force_bdss.core.base_model import BaseModel
 from force_bdss.mco.parameters.base_mco_parameter_factory import \
     BaseMCOParameterFactory
 from force_bdss.local_traits import Identifier
 
 
-class BaseMCOParameter(HasStrictTraits):
+class BaseMCOParameter(BaseModel):
     """The base class of all MCO Parameter models.
     Must be reimplemented by specific classes handling the specific parameter
     that MCOs understand.
@@ -19,7 +20,3 @@ class BaseMCOParameter(HasStrictTraits):
 
     #: A CUBA key describing the type of the parameter
     type = String(visible=False)
-
-    def __init__(self, factory, *args, **kwargs):
-        self.factory = factory
-        super(BaseMCOParameter, self).__init__(*args, **kwargs)
diff --git a/force_bdss/notification_listeners/base_notification_listener_model.py b/force_bdss/notification_listeners/base_notification_listener_model.py
index ef7e58b044cc31e1be9bacd3772c8b2658cf901a..ac5d687571f17f79cdee1721c4353f0d4f9b9e9a 100644
--- a/force_bdss/notification_listeners/base_notification_listener_model.py
+++ b/force_bdss/notification_listeners/base_notification_listener_model.py
@@ -1,10 +1,11 @@
-from traits.api import ABCHasStrictTraits, Instance
+from traits.api import Instance
 
+from force_bdss.core.base_model import BaseModel
 from force_bdss.notification_listeners.i_notification_listener_factory import \
     INotificationListenerFactory
 
 
-class BaseNotificationListenerModel(ABCHasStrictTraits):
+class BaseNotificationListenerModel(BaseModel):
     """Base class for the specific Notification Listener models.
     This model will also provide, through traits/traitsui magic the View
     that will appear in the workflow manager UI.
@@ -16,7 +17,3 @@ class BaseNotificationListenerModel(ABCHasStrictTraits):
     factory = Instance(INotificationListenerFactory,
                        visible=False,
                        transient=True)
-
-    def __init__(self, factory, *args, **kwargs):
-        self.factory = factory
-        super(BaseNotificationListenerModel, self).__init__(*args, **kwargs)