diff --git a/README.md b/README.md
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..68e6a408d871425da72d2320d1bf8ee666f18e57 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,8 @@
+FORCE BDSS
+----------
+
+This repository contains the implementation of the Business Decision System. It is implemented
+under the FORCE project (Horizon 2020/NMBP-23-2016/721027).
+
+
+
diff --git a/braindump/main.py b/braindump/main.py
index cbac2019f5f7dbf3f3277a66506c251f56e877f4..a61d6a00c4e4b9534c8375c5ecdf4fa738d95930 100644
--- a/braindump/main.py
+++ b/braindump/main.py
@@ -1,4 +1,4 @@
-from force import *
+from force_bdss import *
 
 wf=Workflow()
 wf.set_mco(Dakota())
diff --git a/force/__init__.py b/force_bdss/__init__.py
similarity index 100%
rename from force/__init__.py
rename to force_bdss/__init__.py
diff --git a/force_bdss/application.py b/force_bdss/application.py
new file mode 100644
index 0000000000000000000000000000000000000000..d0fef517e0b521c07420500cb6a4d245b374316c
--- /dev/null
+++ b/force_bdss/application.py
@@ -0,0 +1,25 @@
+# Enthought library imports.
+from envisage.api import Application
+
+
+# Application entry point.
+from force_bdss.multi_criteria_optimizers_plugin import \
+    MultiCriteriaOptimizersPlugin
+from force_bdss.workflow_plugin import WorkflowPlugin
+from force_bdss.key_performance_calculators_plugin import \
+    KeyPerformanceCalculatorsPlugin
+
+
+def run():
+
+    application = Application(
+        id='force',
+        plugins=[
+            WorkflowPlugin(),
+            MultiCriteriaOptimizersPlugin(),
+            KeyPerformanceCalculatorsPlugin(),
+        ]
+    )
+
+    # Run it!
+    application.run()
diff --git a/force_bdss/basic_key_performance_calculator.py b/force_bdss/basic_key_performance_calculator.py
new file mode 100644
index 0000000000000000000000000000000000000000..30d8a7650a5945e31b2577912d2e750713bd0f6e
--- /dev/null
+++ b/force_bdss/basic_key_performance_calculator.py
@@ -0,0 +1,9 @@
+from traits.api import provides, HasStrictTraits
+
+from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator
+
+
+@provides(IKeyPerformanceCalculator)
+class BasicKeyPerformanceCalculator(HasStrictTraits):
+    def run(self):
+        print("Computing basic key performance indicator")
diff --git a/force_bdss/basic_multi_criteria_optimizer.py b/force_bdss/basic_multi_criteria_optimizer.py
new file mode 100644
index 0000000000000000000000000000000000000000..740c6aa6ee6edfb8d28d9e33b36571f0464a1a44
--- /dev/null
+++ b/force_bdss/basic_multi_criteria_optimizer.py
@@ -0,0 +1,9 @@
+from traits.api import provides, HasStrictTraits
+
+from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
+
+
+@provides(IMultiCriteriaOptimizer)
+class BasicMultiCriteriaOptimizer(HasStrictTraits):
+    def run(self):
+        print("Basic multicriteria optimizer in action")
diff --git a/force_bdss/i_key_performance_calculator.py b/force_bdss/i_key_performance_calculator.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ad12ca9a6ac879a19d56791e79f5b4a60087645
--- /dev/null
+++ b/force_bdss/i_key_performance_calculator.py
@@ -0,0 +1,6 @@
+from traits.api import Interface
+
+
+class IKeyPerformanceCalculator(Interface):
+    def run(self):
+        pass
diff --git a/force_bdss/i_multi_criteria_optimizers.py b/force_bdss/i_multi_criteria_optimizers.py
new file mode 100644
index 0000000000000000000000000000000000000000..a04bf6be6409133ece307b14916bcdcddba94d11
--- /dev/null
+++ b/force_bdss/i_multi_criteria_optimizers.py
@@ -0,0 +1,6 @@
+from traits.api import Interface
+
+
+class IMultiCriteriaOptimizer(Interface):
+    def run(self):
+        pass
diff --git a/force_bdss/key_performance_calculators_plugin.py b/force_bdss/key_performance_calculators_plugin.py
new file mode 100644
index 0000000000000000000000000000000000000000..082af87fa08bf826f7322f23993bc68c735dca63
--- /dev/null
+++ b/force_bdss/key_performance_calculators_plugin.py
@@ -0,0 +1,19 @@
+from traits.api import List
+from envisage.plugin import Plugin
+
+from force_bdss.basic_key_performance_calculator import \
+    BasicKeyPerformanceCalculator
+from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator
+
+
+class KeyPerformanceCalculatorsPlugin(Plugin):
+
+    id = "force_bdss.key_performance_calculators_plugin"
+
+    key_performance_calculators = List(
+        IKeyPerformanceCalculator,
+        contributes_to='force_bdss.key_performance_calculators'
+    )
+
+    def _key_performance_calculators_default(self):
+        return [BasicKeyPerformanceCalculator()]
diff --git a/force_bdss/multi_criteria_optimizers_plugin.py b/force_bdss/multi_criteria_optimizers_plugin.py
new file mode 100644
index 0000000000000000000000000000000000000000..a815cd1f9f3f959b6aa33f482d30c5f9a9f97be5
--- /dev/null
+++ b/force_bdss/multi_criteria_optimizers_plugin.py
@@ -0,0 +1,19 @@
+from traits.api import List
+from envisage.plugin import Plugin
+
+from force_bdss.basic_multi_criteria_optimizer import \
+    BasicMultiCriteriaOptimizer
+from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
+
+
+class MultiCriteriaOptimizersPlugin(Plugin):
+
+    id = "force_bdss.multi_criteria_optimizers_plugin"
+
+    multi_criteria_optimizers = List(
+        IMultiCriteriaOptimizer,
+        contributes_to='force_bdss.multi_criteria_optimizers'
+    )
+
+    def _multi_criteria_optimizers_default(self):
+        return [BasicMultiCriteriaOptimizer()]
diff --git a/force_bdss/workflow_plugin.py b/force_bdss/workflow_plugin.py
new file mode 100644
index 0000000000000000000000000000000000000000..75e898c1737bc49d6a5a50b516de53f380686565
--- /dev/null
+++ b/force_bdss/workflow_plugin.py
@@ -0,0 +1,27 @@
+from envisage.extension_point import ExtensionPoint
+from traits.api import List
+from envisage.plugin import Plugin
+from traits.api import on_trait_change
+
+from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator
+from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
+
+
+class WorkflowPlugin(Plugin):
+
+    id = "force_bdss.workflow_plugin"
+
+    key_performance_calculators = ExtensionPoint(
+        List(IKeyPerformanceCalculator),
+        id='force_bdss.key_performance_calculators')
+
+    multi_criteria_optimizers = ExtensionPoint(
+        List(IMultiCriteriaOptimizer),
+        id='force_bdss.multi_criteria_optimizers')
+
+    @on_trait_change("application:started")
+    def application_started(self):
+        for mco in self.multi_criteria_optimizers:
+            mco.run()
+        for kpc in self.key_performance_calculators:
+            kpc.run()
diff --git a/setup.py b/setup.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dcce0668a7ffaef86207222a820a185662067f19 100644
--- a/setup.py
+++ b/setup.py
@@ -0,0 +1,15 @@
+from setuptools import setup
+
+VERSION="0.1.0.dev0"
+
+setup(
+    name="force_bdss",
+    version=VERSION,
+    entry_points={
+    'console_scripts': [
+        'force_bdss = force_bdss.application:run',
+    ]},
+    install_requires=[
+        "envisage >= 4.6.0"
+    ]
+)