diff --git a/CHANGES.rst b/CHANGES.rst
index 0014084addd4701e74701b63fb663a1fd07495bf..e720dd385172382cde8548128124f73f93756bd8 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -6,6 +6,11 @@ Release 0.3.0
 
 Backward incompatible changes that require rework of the plugins:
 
+- Parameter factories are now instantiated once and for all (#135).
+  - requires to change the plugins to return a list of factory classes
+    in the get_parameter_factory_classes() method, instead of the
+    parameter_factories() method. This method becomes a trait now.
+    All plugins exporting an MCO must be updated.
 - Design change of the notification infrastructure in MCO (#187):
     - the started and finished events do not need to be triggered anymore.
     - the new_data method is now obsolete and must be removed.
diff --git a/doc/source/api/force_bdss.cli.rst b/doc/source/api/force_bdss.cli.rst
index 741ef7b66617910564b7b1846be71c572753ffdb..c6f155feae77f2f4ef9f45341a29ee927b931f5e 100644
--- a/doc/source/api/force_bdss.cli.rst
+++ b/doc/source/api/force_bdss.cli.rst
@@ -1,5 +1,5 @@
-force\_bdss.cli package
-=======================
+force\_bdss\.cli package
+========================
 
 Subpackages
 -----------
@@ -11,8 +11,8 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.cli.force\_bdss module
-----------------------------------
+force\_bdss\.cli\.force\_bdss module
+------------------------------------
 
 .. automodule:: force_bdss.cli.force_bdss
     :members:
diff --git a/doc/source/api/force_bdss.cli.tests.rst b/doc/source/api/force_bdss.cli.tests.rst
index 9ddd88605656c6df09440ea8c02c3ff827b939fd..207d9516f942c774bf349ac8a91ec55c4f5807ca 100644
--- a/doc/source/api/force_bdss.cli.tests.rst
+++ b/doc/source/api/force_bdss.cli.tests.rst
@@ -1,11 +1,11 @@
-force\_bdss.cli.tests package
-=============================
+force\_bdss\.cli\.tests package
+===============================
 
 Submodules
 ----------
 
-force\_bdss.cli.tests.test\_execution module
---------------------------------------------
+force\_bdss\.cli\.tests\.test\_execution module
+-----------------------------------------------
 
 .. automodule:: force_bdss.cli.tests.test_execution
     :members:
diff --git a/doc/source/api/force_bdss.core.rst b/doc/source/api/force_bdss.core.rst
index 6503948ae6a6b373215106cadc48769c3d59ead2..cffbe8e1222ba63c3a8e9e6315657fba0b73ed83 100644
--- a/doc/source/api/force_bdss.core.rst
+++ b/doc/source/api/force_bdss.core.rst
@@ -1,5 +1,5 @@
-force\_bdss.core package
-========================
+force\_bdss\.core package
+=========================
 
 Subpackages
 -----------
@@ -11,48 +11,96 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.core.data\_value module
------------------------------------
+force\_bdss\.core\.base\_factory module
+---------------------------------------
+
+.. automodule:: force_bdss.core.base_factory
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.core\.base\_model module
+-------------------------------------
+
+.. automodule:: force_bdss.core.base_model
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.core\.data\_value module
+-------------------------------------
 
 .. automodule:: force_bdss.core.data_value
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core.execution\_layer module
-----------------------------------------
+force\_bdss\.core\.execution module
+-----------------------------------
+
+.. automodule:: force_bdss.core.execution
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.core\.execution\_layer module
+------------------------------------------
 
 .. automodule:: force_bdss.core.execution_layer
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core.input\_slot\_info module
------------------------------------------
+force\_bdss\.core\.i\_factory module
+------------------------------------
+
+.. automodule:: force_bdss.core.i_factory
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.core\.input\_slot\_info module
+-------------------------------------------
 
 .. automodule:: force_bdss.core.input_slot_info
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core.output\_slot\_info module
-------------------------------------------
+force\_bdss\.core\.kpi\_specification module
+--------------------------------------------
+
+.. automodule:: force_bdss.core.kpi_specification
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.core\.output\_slot\_info module
+--------------------------------------------
 
 .. automodule:: force_bdss.core.output_slot_info
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core.slot module
-----------------------------
+force\_bdss\.core\.slot module
+------------------------------
 
 .. automodule:: force_bdss.core.slot
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core.workflow module
---------------------------------
+force\_bdss\.core\.verifier module
+----------------------------------
+
+.. automodule:: force_bdss.core.verifier
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.core\.workflow module
+----------------------------------
 
 .. automodule:: force_bdss.core.workflow
     :members:
diff --git a/doc/source/api/force_bdss.core.tests.rst b/doc/source/api/force_bdss.core.tests.rst
index 43d99b47cb55d9022e7b45458cd4b85689b16d41..e180eb77f1b8f96ba80cd86b88e258af3fbc56df 100644
--- a/doc/source/api/force_bdss.core.tests.rst
+++ b/doc/source/api/force_bdss.core.tests.rst
@@ -1,33 +1,49 @@
-force\_bdss.core.tests package
-==============================
+force\_bdss\.core\.tests package
+================================
 
 Submodules
 ----------
 
-force\_bdss.core.tests.test\_data\_value module
------------------------------------------------
+force\_bdss\.core\.tests\.test\_data\_value module
+--------------------------------------------------
 
 .. automodule:: force_bdss.core.tests.test_data_value
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core.tests.test\_input\_slot\_info module
------------------------------------------------------
+force\_bdss\.core\.tests\.test\_execution module
+------------------------------------------------
+
+.. automodule:: force_bdss.core.tests.test_execution
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.core\.tests\.test\_input\_slot\_info module
+--------------------------------------------------------
 
 .. automodule:: force_bdss.core.tests.test_input_slot_info
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core.tests.test\_slot module
-----------------------------------------
+force\_bdss\.core\.tests\.test\_slot module
+-------------------------------------------
 
 .. automodule:: force_bdss.core.tests.test_slot
     :members:
     :undoc-members:
     :show-inheritance:
 
+force\_bdss\.core\.tests\.test\_verifier module
+-----------------------------------------------
+
+.. automodule:: force_bdss.core.tests.test_verifier
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
 
 Module contents
 ---------------
diff --git a/doc/source/api/force_bdss.core_plugins.rst b/doc/source/api/force_bdss.core_plugins.rst
index 5fb0a53c63a0200d62baf5ed9cc72b558b65f2f7..cce8a4b89316d59c4cf8b5b07faa094ac31b95f8 100644
--- a/doc/source/api/force_bdss.core_plugins.rst
+++ b/doc/source/api/force_bdss.core_plugins.rst
@@ -1,5 +1,5 @@
-force\_bdss.core\_plugins package
-=================================
+force\_bdss\.core\_plugins package
+==================================
 
 Module contents
 ---------------
diff --git a/doc/source/api/force_bdss.data_sources.rst b/doc/source/api/force_bdss.data_sources.rst
index 75cba90da86005f022c8af28db198cc0a0eca276..871f27288e36981ebd30c17a70cf8ca3d37f7f20 100644
--- a/doc/source/api/force_bdss.data_sources.rst
+++ b/doc/source/api/force_bdss.data_sources.rst
@@ -1,5 +1,5 @@
-force\_bdss.data\_sources package
-=================================
+force\_bdss\.data\_sources package
+==================================
 
 Subpackages
 -----------
@@ -11,32 +11,32 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.data\_sources.base\_data\_source module
----------------------------------------------------
+force\_bdss\.data\_sources\.base\_data\_source module
+-----------------------------------------------------
 
 .. automodule:: force_bdss.data_sources.base_data_source
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.data\_sources.base\_data\_source\_factory module
-------------------------------------------------------------
+force\_bdss\.data\_sources\.base\_data\_source\_factory module
+--------------------------------------------------------------
 
 .. automodule:: force_bdss.data_sources.base_data_source_factory
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.data\_sources.base\_data\_source\_model module
-----------------------------------------------------------
+force\_bdss\.data\_sources\.base\_data\_source\_model module
+------------------------------------------------------------
 
 .. automodule:: force_bdss.data_sources.base_data_source_model
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.data\_sources.i\_data\_source\_factory module
----------------------------------------------------------
+force\_bdss\.data\_sources\.i\_data\_source\_factory module
+-----------------------------------------------------------
 
 .. automodule:: force_bdss.data_sources.i_data_source_factory
     :members:
diff --git a/doc/source/api/force_bdss.data_sources.tests.rst b/doc/source/api/force_bdss.data_sources.tests.rst
index 7f7961bdf2fa5d4936878b7cc52bb4f37c4a8a8b..e54155a66baf5fc6b98fdff23becc4f0d45b8c51 100644
--- a/doc/source/api/force_bdss.data_sources.tests.rst
+++ b/doc/source/api/force_bdss.data_sources.tests.rst
@@ -1,27 +1,27 @@
-force\_bdss.data\_sources.tests package
-=======================================
+force\_bdss\.data\_sources\.tests package
+=========================================
 
 Submodules
 ----------
 
-force\_bdss.data\_sources.tests.test\_base\_data\_source module
----------------------------------------------------------------
+force\_bdss\.data\_sources\.tests\.test\_base\_data\_source module
+------------------------------------------------------------------
 
 .. automodule:: force_bdss.data_sources.tests.test_base_data_source
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.data\_sources.tests.test\_base\_data\_source\_factory module
-------------------------------------------------------------------------
+force\_bdss\.data\_sources\.tests\.test\_base\_data\_source\_factory module
+---------------------------------------------------------------------------
 
 .. automodule:: force_bdss.data_sources.tests.test_base_data_source_factory
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.data\_sources.tests.test\_base\_data\_source\_model module
-----------------------------------------------------------------------
+force\_bdss\.data\_sources\.tests\.test\_base\_data\_source\_model module
+-------------------------------------------------------------------------
 
 .. automodule:: force_bdss.data_sources.tests.test_base_data_source_model
     :members:
diff --git a/doc/source/api/force_bdss.io.rst b/doc/source/api/force_bdss.io.rst
index ebd4ba1a7d7ac24ad0dfcf72ebc808d1bf182479..558ecbe7027e6a1f7dac11c92b973a6c3111e9f3 100644
--- a/doc/source/api/force_bdss.io.rst
+++ b/doc/source/api/force_bdss.io.rst
@@ -1,5 +1,5 @@
-force\_bdss.io package
-======================
+force\_bdss\.io package
+=======================
 
 Subpackages
 -----------
@@ -11,16 +11,16 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.io.workflow\_reader module
---------------------------------------
+force\_bdss\.io\.workflow\_reader module
+----------------------------------------
 
 .. automodule:: force_bdss.io.workflow_reader
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.io.workflow\_writer module
---------------------------------------
+force\_bdss\.io\.workflow\_writer module
+----------------------------------------
 
 .. automodule:: force_bdss.io.workflow_writer
     :members:
diff --git a/doc/source/api/force_bdss.io.tests.rst b/doc/source/api/force_bdss.io.tests.rst
index e2035f8fed7af52a6fef929a787f7974aa34e364..7a53ccef1f9275f7ef794f7d0fe3d73f45445cef 100644
--- a/doc/source/api/force_bdss.io.tests.rst
+++ b/doc/source/api/force_bdss.io.tests.rst
@@ -1,19 +1,19 @@
-force\_bdss.io.tests package
-============================
+force\_bdss\.io\.tests package
+==============================
 
 Submodules
 ----------
 
-force\_bdss.io.tests.test\_workflow\_reader module
---------------------------------------------------
+force\_bdss\.io\.tests\.test\_workflow\_reader module
+-----------------------------------------------------
 
 .. automodule:: force_bdss.io.tests.test_workflow_reader
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.io.tests.test\_workflow\_writer module
---------------------------------------------------
+force\_bdss\.io\.tests\.test\_workflow\_writer module
+-----------------------------------------------------
 
 .. automodule:: force_bdss.io.tests.test_workflow_writer
     :members:
diff --git a/doc/source/api/force_bdss.mco.parameters.rst b/doc/source/api/force_bdss.mco.parameters.rst
index 15ce6013595cc77af064b1b50e8ce64ce04ad5cc..94e1231d8082cc415cc26ced1bee57704c313686 100644
--- a/doc/source/api/force_bdss.mco.parameters.rst
+++ b/doc/source/api/force_bdss.mco.parameters.rst
@@ -1,5 +1,5 @@
-force\_bdss.mco.parameters package
-==================================
+force\_bdss\.mco\.parameters package
+====================================
 
 Subpackages
 -----------
@@ -11,22 +11,30 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.mco.parameters.base\_mco\_parameter module
-------------------------------------------------------
+force\_bdss\.mco\.parameters\.base\_mco\_parameter module
+---------------------------------------------------------
 
 .. automodule:: force_bdss.mco.parameters.base_mco_parameter
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.parameters.base\_mco\_parameter\_factory module
----------------------------------------------------------------
+force\_bdss\.mco\.parameters\.base\_mco\_parameter\_factory module
+------------------------------------------------------------------
 
 .. automodule:: force_bdss.mco.parameters.base_mco_parameter_factory
     :members:
     :undoc-members:
     :show-inheritance:
 
+force\_bdss\.mco\.parameters\.i\_mco\_parameter\_factory module
+---------------------------------------------------------------
+
+.. automodule:: force_bdss.mco.parameters.i_mco_parameter_factory
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
 
 Module contents
 ---------------
diff --git a/doc/source/api/force_bdss.mco.parameters.tests.rst b/doc/source/api/force_bdss.mco.parameters.tests.rst
index b455bcb09c5198b8a38546f8125b3ab52f3a99ad..fa013a8eb0620e4ae446e728aa0ec7e26f49118e 100644
--- a/doc/source/api/force_bdss.mco.parameters.tests.rst
+++ b/doc/source/api/force_bdss.mco.parameters.tests.rst
@@ -1,19 +1,19 @@
-force\_bdss.mco.parameters.tests package
-========================================
+force\_bdss\.mco\.parameters\.tests package
+===========================================
 
 Submodules
 ----------
 
-force\_bdss.mco.parameters.tests.test\_base\_mco\_parameter module
-------------------------------------------------------------------
+force\_bdss\.mco\.parameters\.tests\.test\_base\_mco\_parameter module
+----------------------------------------------------------------------
 
 .. automodule:: force_bdss.mco.parameters.tests.test_base_mco_parameter
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.parameters.tests.test\_base\_mco\_parameter\_factory module
----------------------------------------------------------------------------
+force\_bdss\.mco\.parameters\.tests\.test\_base\_mco\_parameter\_factory module
+-------------------------------------------------------------------------------
 
 .. automodule:: force_bdss.mco.parameters.tests.test_base_mco_parameter_factory
     :members:
diff --git a/doc/source/api/force_bdss.mco.rst b/doc/source/api/force_bdss.mco.rst
index e91c59a9a6a6cbf7228515f34dc37e32dc2a6466..62b36b088430646144ccacabd9ccceb820ebcd12 100644
--- a/doc/source/api/force_bdss.mco.rst
+++ b/doc/source/api/force_bdss.mco.rst
@@ -1,5 +1,5 @@
-force\_bdss.mco package
-=======================
+force\_bdss\.mco package
+========================
 
 Subpackages
 -----------
@@ -12,40 +12,40 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.mco.base\_mco module
---------------------------------
+force\_bdss\.mco\.base\_mco module
+----------------------------------
 
 .. automodule:: force_bdss.mco.base_mco
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.base\_mco\_communicator module
-----------------------------------------------
+force\_bdss\.mco\.base\_mco\_communicator module
+------------------------------------------------
 
 .. automodule:: force_bdss.mco.base_mco_communicator
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.base\_mco\_factory module
------------------------------------------
+force\_bdss\.mco\.base\_mco\_factory module
+-------------------------------------------
 
 .. automodule:: force_bdss.mco.base_mco_factory
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.base\_mco\_model module
----------------------------------------
+force\_bdss\.mco\.base\_mco\_model module
+-----------------------------------------
 
 .. automodule:: force_bdss.mco.base_mco_model
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.i\_mco\_factory module
---------------------------------------
+force\_bdss\.mco\.i\_mco\_factory module
+----------------------------------------
 
 .. automodule:: force_bdss.mco.i_mco_factory
     :members:
diff --git a/doc/source/api/force_bdss.mco.tests.rst b/doc/source/api/force_bdss.mco.tests.rst
index 8dc8562d69dad5194df49fac1c750d8ebc00a2f9..e20c2d06b72bb36669f8a4a0dd3e693b54a0fa17 100644
--- a/doc/source/api/force_bdss.mco.tests.rst
+++ b/doc/source/api/force_bdss.mco.tests.rst
@@ -1,27 +1,27 @@
-force\_bdss.mco.tests package
-=============================
+force\_bdss\.mco\.tests package
+===============================
 
 Submodules
 ----------
 
-force\_bdss.mco.tests.test\_base\_mco module
---------------------------------------------
+force\_bdss\.mco\.tests\.test\_base\_mco module
+-----------------------------------------------
 
 .. automodule:: force_bdss.mco.tests.test_base_mco
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.tests.test\_base\_mco\_communicator module
-----------------------------------------------------------
+force\_bdss\.mco\.tests\.test\_base\_mco\_communicator module
+-------------------------------------------------------------
 
 .. automodule:: force_bdss.mco.tests.test_base_mco_communicator
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.mco.tests.test\_base\_mco\_factory module
------------------------------------------------------
+force\_bdss\.mco\.tests\.test\_base\_mco\_factory module
+--------------------------------------------------------
 
 .. automodule:: force_bdss.mco.tests.test_base_mco_factory
     :members:
diff --git a/doc/source/api/force_bdss.notification_listeners.rst b/doc/source/api/force_bdss.notification_listeners.rst
index dd00a04bad5e44292b6ff6d99250206f8255ac69..5999db5fb7a63c0a728b2f3deea0440c93300664 100644
--- a/doc/source/api/force_bdss.notification_listeners.rst
+++ b/doc/source/api/force_bdss.notification_listeners.rst
@@ -1,5 +1,5 @@
-force\_bdss.notification\_listeners package
-===========================================
+force\_bdss\.notification\_listeners package
+============================================
 
 Subpackages
 -----------
@@ -11,32 +11,32 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.notification\_listeners.base\_notification\_listener module
------------------------------------------------------------------------
+force\_bdss\.notification\_listeners\.base\_notification\_listener module
+-------------------------------------------------------------------------
 
 .. automodule:: force_bdss.notification_listeners.base_notification_listener
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.notification\_listeners.base\_notification\_listener\_factory module
---------------------------------------------------------------------------------
+force\_bdss\.notification\_listeners\.base\_notification\_listener\_factory module
+----------------------------------------------------------------------------------
 
 .. automodule:: force_bdss.notification_listeners.base_notification_listener_factory
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.notification\_listeners.base\_notification\_listener\_model module
-------------------------------------------------------------------------------
+force\_bdss\.notification\_listeners\.base\_notification\_listener\_model module
+--------------------------------------------------------------------------------
 
 .. automodule:: force_bdss.notification_listeners.base_notification_listener_model
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.notification\_listeners.i\_notification\_listener\_factory module
------------------------------------------------------------------------------
+force\_bdss\.notification\_listeners\.i\_notification\_listener\_factory module
+-------------------------------------------------------------------------------
 
 .. automodule:: force_bdss.notification_listeners.i_notification_listener_factory
     :members:
diff --git a/doc/source/api/force_bdss.notification_listeners.tests.rst b/doc/source/api/force_bdss.notification_listeners.tests.rst
index c62c86600072a9897cf08a35a222775f5aa55538..e3d79ac6d8a20bf941c5e0d511dc1f38379eb44b 100644
--- a/doc/source/api/force_bdss.notification_listeners.tests.rst
+++ b/doc/source/api/force_bdss.notification_listeners.tests.rst
@@ -1,11 +1,11 @@
-force\_bdss.notification\_listeners.tests package
-=================================================
+force\_bdss\.notification\_listeners\.tests package
+===================================================
 
 Submodules
 ----------
 
-force\_bdss.notification\_listeners.tests.test\_base\_notification\_listener\_factory module
---------------------------------------------------------------------------------------------
+force\_bdss\.notification\_listeners\.tests\.test\_base\_notification\_listener\_factory module
+-----------------------------------------------------------------------------------------------
 
 .. automodule:: force_bdss.notification_listeners.tests.test_base_notification_listener_factory
     :members:
diff --git a/doc/source/api/force_bdss.rst b/doc/source/api/force_bdss.rst
index 353b095d97126083017deb66c2f8e4506dff776c..8fda5b9d3a4200c08df182dc04e4b498b4949e3f 100644
--- a/doc/source/api/force_bdss.rst
+++ b/doc/source/api/force_bdss.rst
@@ -19,88 +19,88 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.api module
-----------------------
+force\_bdss\.api module
+-----------------------
 
 .. automodule:: force_bdss.api
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.base\_core\_driver module
--------------------------------------
+force\_bdss\.base\_core\_driver module
+--------------------------------------
 
 .. automodule:: force_bdss.base_core_driver
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.base\_extension\_plugin module
-------------------------------------------
+force\_bdss\.base\_extension\_plugin module
+-------------------------------------------
 
 .. automodule:: force_bdss.base_extension_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.bdss\_application module
-------------------------------------
+force\_bdss\.bdss\_application module
+-------------------------------------
 
 .. automodule:: force_bdss.bdss_application
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core\_driver\_events module
----------------------------------------
+force\_bdss\.core\_driver\_events module
+----------------------------------------
 
 .. automodule:: force_bdss.core_driver_events
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core\_evaluation\_driver module
--------------------------------------------
+force\_bdss\.core\_evaluation\_driver module
+--------------------------------------------
 
 .. automodule:: force_bdss.core_evaluation_driver
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.core\_mco\_driver module
-------------------------------------
+force\_bdss\.core\_mco\_driver module
+-------------------------------------
 
 .. automodule:: force_bdss.core_mco_driver
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.factory\_registry\_plugin module
---------------------------------------------
+force\_bdss\.factory\_registry\_plugin module
+---------------------------------------------
 
 .. automodule:: force_bdss.factory_registry_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.ids module
-----------------------
+force\_bdss\.ids module
+-----------------------
 
 .. automodule:: force_bdss.ids
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.local\_traits module
---------------------------------
+force\_bdss\.local\_traits module
+---------------------------------
 
 .. automodule:: force_bdss.local_traits
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.version module
---------------------------
+force\_bdss\.version module
+---------------------------
 
 .. automodule:: force_bdss.version
     :members:
diff --git a/doc/source/api/force_bdss.tests.dummy_classes.rst b/doc/source/api/force_bdss.tests.dummy_classes.rst
index 4b9ec6fca3b5f5dbd4452ddd532cdce8b6da1716..8cb02dd8a4c18a5238a15edf127c91d93a0dd7a7 100644
--- a/doc/source/api/force_bdss.tests.dummy_classes.rst
+++ b/doc/source/api/force_bdss.tests.dummy_classes.rst
@@ -1,51 +1,51 @@
-force\_bdss.tests.dummy\_classes package
-========================================
+force\_bdss\.tests\.dummy\_classes package
+==========================================
 
 Submodules
 ----------
 
-force\_bdss.tests.dummy\_classes.data\_source module
-----------------------------------------------------
+force\_bdss\.tests\.dummy\_classes\.data\_source module
+-------------------------------------------------------
 
 .. automodule:: force_bdss.tests.dummy_classes.data_source
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.dummy\_classes.extension\_plugin module
----------------------------------------------------------
+force\_bdss\.tests\.dummy\_classes\.extension\_plugin module
+------------------------------------------------------------
 
 .. automodule:: force_bdss.tests.dummy_classes.extension_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.dummy\_classes.factory\_registry\_plugin module
------------------------------------------------------------------
+force\_bdss\.tests\.dummy\_classes\.factory\_registry\_plugin module
+--------------------------------------------------------------------
 
 .. automodule:: force_bdss.tests.dummy_classes.factory_registry_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.dummy\_classes.mco module
--------------------------------------------
+force\_bdss\.tests\.dummy\_classes\.mco module
+----------------------------------------------
 
 .. automodule:: force_bdss.tests.dummy_classes.mco
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.dummy\_classes.notification\_listener module
---------------------------------------------------------------
+force\_bdss\.tests\.dummy\_classes\.notification\_listener module
+-----------------------------------------------------------------
 
 .. automodule:: force_bdss.tests.dummy_classes.notification_listener
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.dummy\_classes.ui\_hooks module
--------------------------------------------------
+force\_bdss\.tests\.dummy\_classes\.ui\_hooks module
+----------------------------------------------------
 
 .. automodule:: force_bdss.tests.dummy_classes.ui_hooks
     :members:
diff --git a/doc/source/api/force_bdss.tests.fixtures.rst b/doc/source/api/force_bdss.tests.fixtures.rst
index c432389b65ce74669a9067750ec8bc04133a907b..3c0c12f86492d2ad5aec4a1d6e1753da47ba1084 100644
--- a/doc/source/api/force_bdss.tests.fixtures.rst
+++ b/doc/source/api/force_bdss.tests.fixtures.rst
@@ -1,5 +1,5 @@
-force\_bdss.tests.fixtures package
-==================================
+force\_bdss\.tests\.fixtures package
+====================================
 
 Module contents
 ---------------
diff --git a/doc/source/api/force_bdss.tests.probe_classes.rst b/doc/source/api/force_bdss.tests.probe_classes.rst
index 2ab8773798f8a3deaf04193824bef3364c3a1f1d..60a6df22b5f97d88c0f47575ce2a2692e2c86d22 100644
--- a/doc/source/api/force_bdss.tests.probe_classes.rst
+++ b/doc/source/api/force_bdss.tests.probe_classes.rst
@@ -1,51 +1,51 @@
-force\_bdss.tests.probe\_classes package
-========================================
+force\_bdss\.tests\.probe\_classes package
+==========================================
 
 Submodules
 ----------
 
-force\_bdss.tests.probe\_classes.data\_source module
-----------------------------------------------------
+force\_bdss\.tests\.probe\_classes\.data\_source module
+-------------------------------------------------------
 
 .. automodule:: force_bdss.tests.probe_classes.data_source
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.probe\_classes.factory\_registry\_plugin module
------------------------------------------------------------------
+force\_bdss\.tests\.probe\_classes\.factory\_registry\_plugin module
+--------------------------------------------------------------------
 
 .. automodule:: force_bdss.tests.probe_classes.factory_registry_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.probe\_classes.mco module
--------------------------------------------
+force\_bdss\.tests\.probe\_classes\.mco module
+----------------------------------------------
 
 .. automodule:: force_bdss.tests.probe_classes.mco
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.probe\_classes.notification\_listener module
---------------------------------------------------------------
+force\_bdss\.tests\.probe\_classes\.notification\_listener module
+-----------------------------------------------------------------
 
 .. automodule:: force_bdss.tests.probe_classes.notification_listener
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.probe\_classes.probe\_extension\_plugin module
-----------------------------------------------------------------
+force\_bdss\.tests\.probe\_classes\.probe\_extension\_plugin module
+-------------------------------------------------------------------
 
 .. automodule:: force_bdss.tests.probe_classes.probe_extension_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.probe\_classes.ui\_hooks module
--------------------------------------------------
+force\_bdss\.tests\.probe\_classes\.ui\_hooks module
+----------------------------------------------------
 
 .. automodule:: force_bdss.tests.probe_classes.ui_hooks
     :members:
diff --git a/doc/source/api/force_bdss.tests.rst b/doc/source/api/force_bdss.tests.rst
index 32ad912d2adf8403db5675841ef3037189f1aa31..3bb1df91e8a3dd805c0f65c08c54d207aacbde00 100644
--- a/doc/source/api/force_bdss.tests.rst
+++ b/doc/source/api/force_bdss.tests.rst
@@ -1,5 +1,5 @@
-force\_bdss.tests package
-=========================
+force\_bdss\.tests package
+==========================
 
 Subpackages
 -----------
@@ -13,64 +13,72 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.tests.test\_base\_extension\_plugin module
-------------------------------------------------------
+force\_bdss\.tests\.test\_base\_extension\_plugin module
+--------------------------------------------------------
 
 .. automodule:: force_bdss.tests.test_base_extension_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.test\_bdss\_application module
-------------------------------------------------
+force\_bdss\.tests\.test\_bdss\_application module
+--------------------------------------------------
 
 .. automodule:: force_bdss.tests.test_bdss_application
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.test\_core\_evaluation\_driver module
--------------------------------------------------------
+force\_bdss\.tests\.test\_core\_driver\_events module
+-----------------------------------------------------
+
+.. automodule:: force_bdss.tests.test_core_driver_events
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+force\_bdss\.tests\.test\_core\_evaluation\_driver module
+---------------------------------------------------------
 
 .. automodule:: force_bdss.tests.test_core_evaluation_driver
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.test\_core\_mco\_driver module
-------------------------------------------------
+force\_bdss\.tests\.test\_core\_mco\_driver module
+--------------------------------------------------
 
 .. automodule:: force_bdss.tests.test_core_mco_driver
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.test\_factory\_registry\_plugin module
---------------------------------------------------------
+force\_bdss\.tests\.test\_factory\_registry\_plugin module
+----------------------------------------------------------
 
 .. automodule:: force_bdss.tests.test_factory_registry_plugin
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.test\_ids module
-----------------------------------
+force\_bdss\.tests\.test\_ids module
+------------------------------------
 
 .. automodule:: force_bdss.tests.test_ids
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.test\_local\_traits module
---------------------------------------------
+force\_bdss\.tests\.test\_local\_traits module
+----------------------------------------------
 
 .. automodule:: force_bdss.tests.test_local_traits
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.tests.utils module
-------------------------------
+force\_bdss\.tests\.utils module
+--------------------------------
 
 .. automodule:: force_bdss.tests.utils
     :members:
diff --git a/doc/source/api/force_bdss.ui_hooks.rst b/doc/source/api/force_bdss.ui_hooks.rst
index 698c8937c89446239e465821303dfc49120f4df9..309a330f9c24e296f09841dd195e740d9d6475dc 100644
--- a/doc/source/api/force_bdss.ui_hooks.rst
+++ b/doc/source/api/force_bdss.ui_hooks.rst
@@ -1,5 +1,5 @@
-force\_bdss.ui\_hooks package
-=============================
+force\_bdss\.ui\_hooks package
+==============================
 
 Subpackages
 -----------
@@ -11,24 +11,24 @@ Subpackages
 Submodules
 ----------
 
-force\_bdss.ui\_hooks.base\_ui\_hooks\_factory module
------------------------------------------------------
+force\_bdss\.ui\_hooks\.base\_ui\_hooks\_factory module
+-------------------------------------------------------
 
 .. automodule:: force_bdss.ui_hooks.base_ui_hooks_factory
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.ui\_hooks.base\_ui\_hooks\_manager module
------------------------------------------------------
+force\_bdss\.ui\_hooks\.base\_ui\_hooks\_manager module
+-------------------------------------------------------
 
 .. automodule:: force_bdss.ui_hooks.base_ui_hooks_manager
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.ui\_hooks.i\_ui\_hooks\_factory module
---------------------------------------------------
+force\_bdss\.ui\_hooks\.i\_ui\_hooks\_factory module
+----------------------------------------------------
 
 .. automodule:: force_bdss.ui_hooks.i_ui_hooks_factory
     :members:
diff --git a/doc/source/api/force_bdss.ui_hooks.tests.rst b/doc/source/api/force_bdss.ui_hooks.tests.rst
index ce970aaf75880e9a5dd9aaedf8e1d2bf77d81d30..7842a34dccdde91386f184d26d1f127018fa697b 100644
--- a/doc/source/api/force_bdss.ui_hooks.tests.rst
+++ b/doc/source/api/force_bdss.ui_hooks.tests.rst
@@ -1,19 +1,19 @@
-force\_bdss.ui\_hooks.tests package
-===================================
+force\_bdss\.ui\_hooks\.tests package
+=====================================
 
 Submodules
 ----------
 
-force\_bdss.ui\_hooks.tests.test\_base\_ui\_hooks\_factory module
------------------------------------------------------------------
+force\_bdss\.ui\_hooks\.tests\.test\_base\_ui\_hooks\_factory module
+--------------------------------------------------------------------
 
 .. automodule:: force_bdss.ui_hooks.tests.test_base_ui_hooks_factory
     :members:
     :undoc-members:
     :show-inheritance:
 
-force\_bdss.ui\_hooks.tests.test\_base\_ui\_hooks\_manager module
------------------------------------------------------------------
+force\_bdss\.ui\_hooks\.tests\.test\_base\_ui\_hooks\_manager module
+--------------------------------------------------------------------
 
 .. automodule:: force_bdss.ui_hooks.tests.test_base_ui_hooks_manager
     :members:
diff --git a/doc/source/plugin_development.rst b/doc/source/plugin_development.rst
index d8ee7339abda8bbb602b19203eeb4afa497ee070..376d39ab1adaa535d4291924f35ce4837cce8369 100644
--- a/doc/source/plugin_development.rst
+++ b/doc/source/plugin_development.rst
@@ -149,9 +149,9 @@ as in data source factory. The following::
 
 Must return classes of the MCO and the MCOCommunicator. Finally::
 
-    def parameter_factories(self):
+    def get_parameter_factory_classes(self):
 
-Must return a list of instances (NOT classes) of the parameter factories.
+Must return a list of classes of the parameter factories.
 
 MCO Communicator
 ^^^^^^^^^^^^^^^^
diff --git a/force_bdss/core/tests/test_verifier.py b/force_bdss/core/tests/test_verifier.py
index 7ba7017e7952ce5315ca6d27031a3a84f327acc3..a2bc118d3a3ad8bcec33a3c572262e58bd6d08c1 100644
--- a/force_bdss/core/tests/test_verifier.py
+++ b/force_bdss/core/tests/test_verifier.py
@@ -38,7 +38,7 @@ class TestVerifier(unittest.TestCase):
         wf = self.workflow
         mco_factory = self.plugin.mco_factories[0]
         wf.mco = mco_factory.create_model()
-        parameter_factory = mco_factory.parameter_factories()[0]
+        parameter_factory = mco_factory.parameter_factories[0]
         wf.mco.parameters.append(parameter_factory.create_model())
 
         errors = verify_workflow(wf)
@@ -66,7 +66,7 @@ class TestVerifier(unittest.TestCase):
         wf = self.workflow
         mco_factory = self.plugin.mco_factories[0]
         wf.mco = mco_factory.create_model()
-        parameter_factory = mco_factory.parameter_factories()[0]
+        parameter_factory = mco_factory.parameter_factories[0]
         wf.mco.parameters.append(parameter_factory.create_model())
         wf.mco.parameters[0].name = "name"
         wf.mco.parameters[0].type = "type"
@@ -83,7 +83,7 @@ class TestVerifier(unittest.TestCase):
         wf = self.workflow
         mco_factory = self.plugin.mco_factories[0]
         wf.mco = mco_factory.create_model()
-        parameter_factory = mco_factory.parameter_factories()[0]
+        parameter_factory = mco_factory.parameter_factories[0]
         wf.mco.parameters.append(parameter_factory.create_model())
         wf.mco.parameters[0].name = "name"
         wf.mco.parameters[0].type = "type"
diff --git a/force_bdss/factory_registry_plugin.py b/force_bdss/factory_registry_plugin.py
index cb6680b48b9b6af29cc0a79d2ce403a698fd1047..507b7dfc131f1d221e468ddf85cd0df6b6b5962c 100644
--- a/force_bdss/factory_registry_plugin.py
+++ b/force_bdss/factory_registry_plugin.py
@@ -132,7 +132,7 @@ class FactoryRegistryPlugin(Plugin):
         """
         mco_factory = self.mco_factory_by_id(mco_id)
 
-        for factory in mco_factory.parameter_factories():
+        for factory in mco_factory.parameter_factories:
             if factory.id == parameter_id:
                 return factory
 
diff --git a/force_bdss/io/tests/test_workflow_writer.py b/force_bdss/io/tests/test_workflow_writer.py
index a51999f7bafd883c26a3d08d37f4e55b2e16878f..a70a4572a77a579cbbe7e40e530e339efb997792 100644
--- a/force_bdss/io/tests/test_workflow_writer.py
+++ b/force_bdss/io/tests/test_workflow_writer.py
@@ -20,7 +20,7 @@ class TestWorkflowWriter(unittest.TestCase):
     def setUp(self):
         self.registry = DummyFactoryRegistryPlugin()
         self.mco_factory = self.registry.mco_factories[0]
-        self.mco_parameter_factory = self.mco_factory.parameter_factories()[0]
+        self.mco_parameter_factory = self.mco_factory.parameter_factories[0]
         self.data_source_factory = self.registry.data_source_factories[0]
 
     def test_write(self):
diff --git a/force_bdss/mco/base_mco_factory.py b/force_bdss/mco/base_mco_factory.py
index 58544172c2e1fa43b3575fcbcaffc0b5304f0a11..9f3c64ccc6c3d0bb137017167a952a484174ac98 100644
--- a/force_bdss/mco/base_mco_factory.py
+++ b/force_bdss/mco/base_mco_factory.py
@@ -1,10 +1,12 @@
 import logging
-from traits.api import provides, Type
+from traits.api import provides, Type, List, Instance
 
 from force_bdss.core.base_factory import BaseFactory
 from force_bdss.mco.base_mco import BaseMCO
 from force_bdss.mco.base_mco_communicator import BaseMCOCommunicator
 from force_bdss.mco.base_mco_model import BaseMCOModel
+from force_bdss.mco.parameters.base_mco_parameter_factory import \
+    BaseMCOParameterFactory
 from .i_mco_factory import IMCOFactory
 
 log = logging.getLogger(__name__)
@@ -26,6 +28,12 @@ class BaseMCOFactory(BaseFactory):
     #: The communicator associated to the MCO. Define this to your MCO comm.
     communicator_class = Type(BaseMCOCommunicator, allow_none=False)
 
+    #: The list of parameter factory classes this MCO supports.
+    parameter_factory_classes = List(Type(BaseMCOParameterFactory))
+
+    #: The instantiated parameter factories.
+    parameter_factories = List(Instance(BaseMCOParameterFactory))
+
     def __init__(self, plugin, *args, **kwargs):
         super(BaseMCOFactory, self).__init__(
             plugin=plugin,
@@ -35,6 +43,8 @@ class BaseMCOFactory(BaseFactory):
         self.optimizer_class = self.get_optimizer_class()
         self.model_class = self.get_model_class()
         self.communicator_class = self.get_communicator_class()
+        self.parameter_factory_classes = self.get_parameter_factory_classes()
+        self.parameter_factories = self._create_parameter_factories()
 
     def get_optimizer_class(self):
         raise NotImplementedError(
@@ -51,6 +61,11 @@ class BaseMCOFactory(BaseFactory):
             "get_communicator_class was not implemented in factory {}".format(
                 self.__class__))
 
+    def get_parameter_factory_classes(self):
+        raise NotImplementedError(
+            "get_parameter_factory_classes was not implemented "
+            "in factory {}".format(self.__class__))
+
     def create_optimizer(self):
         """Factory method.
         Creates the optimizer with the given application
@@ -97,11 +112,13 @@ class BaseMCOFactory(BaseFactory):
         """
         return self.communicator_class(self)
 
-    def parameter_factories(self):
+    def _create_parameter_factories(self):
         """Returns the parameter factories supported by this MCO
 
         Returns
         -------
         List of BaseMCOParameterFactory
         """
-        return []
+        return [factory_cls(self)
+                for factory_cls in self.parameter_factory_classes
+                ]
diff --git a/force_bdss/mco/tests/test_base_mco_factory.py b/force_bdss/mco/tests/test_base_mco_factory.py
index a703532e38adabea3d526d647922896d6dbf8cd7..6ad8ec6a95bdd1cbf7924c4a519e3ee8c4bca40c 100644
--- a/force_bdss/mco/tests/test_base_mco_factory.py
+++ b/force_bdss/mco/tests/test_base_mco_factory.py
@@ -29,6 +29,9 @@ class MCOFactory(BaseMCOFactory):
     def get_optimizer_class(self):
         return DummyMCO
 
+    def get_parameter_factory_classes(self):
+        return []
+
 
 class TestBaseMCOFactory(unittest.TestCase):
     def setUp(self):
@@ -47,7 +50,7 @@ class TestBaseMCOFactory(unittest.TestCase):
 
     def test_base_object_parameter_factories(self):
         factory = MCOFactory(self.plugin)
-        self.assertEqual(factory.parameter_factories(), [])
+        self.assertEqual(factory.parameter_factories, [])
 
     def test_broken_get_identifier(self):
         class Broken(DummyMCOFactory):
diff --git a/force_bdss/tests/dummy_classes/factory_registry_plugin.py b/force_bdss/tests/dummy_classes/factory_registry_plugin.py
index b7372c4857eb22f30e2740527dc9b816939657e5..022229bfde4951c3db2918e02fde77c9e82ec59b 100644
--- a/force_bdss/tests/dummy_classes/factory_registry_plugin.py
+++ b/force_bdss/tests/dummy_classes/factory_registry_plugin.py
@@ -52,7 +52,7 @@ class DummyFactoryRegistryPlugin(HasStrictTraits):
     def mco_parameter_factory_by_id(self, mco_id, parameter_id):
         mco_factory = self.mco_factory_by_id(mco_id)
 
-        for factory in mco_factory.parameter_factories():
+        for factory in mco_factory.parameter_factories:
             if factory.id == parameter_id:
                 return factory
 
diff --git a/force_bdss/tests/dummy_classes/mco.py b/force_bdss/tests/dummy_classes/mco.py
index 289d88efc5d016ae36e9a825edea2ed3b7617bde..e5dca605b24f3971895eaa658ce002946cc1ef06 100644
--- a/force_bdss/tests/dummy_classes/mco.py
+++ b/force_bdss/tests/dummy_classes/mco.py
@@ -59,5 +59,5 @@ class DummyMCOFactory(BaseMCOFactory):
     def get_optimizer_class(self):
         return DummyMCO
 
-    def parameter_factories(self):
-        return [DummyMCOParameterFactory(mco_factory=self)]
+    def get_parameter_factory_classes(self):
+        return [DummyMCOParameterFactory]
diff --git a/force_bdss/tests/probe_classes/factory_registry_plugin.py b/force_bdss/tests/probe_classes/factory_registry_plugin.py
index f1546b3f66bb9d5f06583a47160400e32df6d109..f28c31752deaaf38d542cbe1873be5857bc8da10 100644
--- a/force_bdss/tests/probe_classes/factory_registry_plugin.py
+++ b/force_bdss/tests/probe_classes/factory_registry_plugin.py
@@ -51,7 +51,7 @@ class ProbeFactoryRegistryPlugin(HasStrictTraits):
     def mco_parameter_factory_by_id(self, mco_id, parameter_id):
         mco_factory = self.mco_factory_by_id(mco_id)
 
-        for factory in mco_factory.parameter_factories():
+        for factory in mco_factory.parameter_factories:
             if factory.id == parameter_id:
                 return factory
 
diff --git a/force_bdss/tests/probe_classes/mco.py b/force_bdss/tests/probe_classes/mco.py
index eb23e9b0bbbcb48ff12eda280555617041f796db..f7c8616cc734b2bd8650fc18b4cc74e09ef1118f 100644
--- a/force_bdss/tests/probe_classes/mco.py
+++ b/force_bdss/tests/probe_classes/mco.py
@@ -116,5 +116,5 @@ class ProbeMCOFactory(BaseMCOFactory):
 
         return self.optimizer
 
-    def parameter_factories(self):
-        return [ProbeParameterFactory(mco_factory=self)]
+    def get_parameter_factory_classes(self):
+        return [ProbeParameterFactory]