diff --git a/force_bdss/base_core_driver.py b/force_bdss/base_core_driver.py
index 701180acb4c01e7f85b915f19d7f9d6aa77ccf58..5875f1784dd0db5af54adb5b5901aeb869aca1a0 100644
--- a/force_bdss/base_core_driver.py
+++ b/force_bdss/base_core_driver.py
@@ -1,7 +1,7 @@
 from envisage.plugin import Plugin
 from traits.trait_types import Instance
 
-from force_bdss.bundle_registry import (
+from force_bdss.bundle_registry_plugin import (
     BundleRegistryPlugin,
     BUNDLE_REGISTRY_PLUGIN_ID
 )
diff --git a/force_bdss/bdss_application.py b/force_bdss/bdss_application.py
index c87b81bfa582cb1b8e3bcc49103f451d2baa9e08..c813e4dc4357c922bc356ef48f076adfc70966be 100644
--- a/force_bdss/bdss_application.py
+++ b/force_bdss/bdss_application.py
@@ -5,7 +5,7 @@ from stevedore.exception import NoMatches
 from envisage.api import Application
 from envisage.core_plugin import CorePlugin
 
-from force_bdss.bundle_registry import BundleRegistryPlugin
+from force_bdss.bundle_registry_plugin import BundleRegistryPlugin
 from force_bdss.core_evaluation_driver import CoreEvaluationDriver
 from force_bdss.core_mco_driver import CoreMCODriver
 
diff --git a/force_bdss/bundle_registry.py b/force_bdss/bundle_registry_plugin.py
similarity index 100%
rename from force_bdss/bundle_registry.py
rename to force_bdss/bundle_registry_plugin.py
diff --git a/force_bdss/tests/test_bundle_registry_plugin.py b/force_bdss/tests/test_bundle_registry_plugin.py
new file mode 100644
index 0000000000000000000000000000000000000000..742a972b6d7871a03f64ea200a90bab82ac1b554
--- /dev/null
+++ b/force_bdss/tests/test_bundle_registry_plugin.py
@@ -0,0 +1,98 @@
+import unittest
+
+from force_bdss.id_generators import bundle_id
+
+try:
+    import mock
+except ImportError:
+    from unittest import mock
+
+from traits.api import List
+from envisage.application import Application
+from envisage.plugin import Plugin
+
+from force_bdss.bundle_registry_plugin import BundleRegistryPlugin
+from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
+from force_bdss.kpi.i_kpi_calculator_bundle import IKPICalculatorBundle
+from force_bdss.mco.i_multi_criteria_optimizer_bundle import \
+    IMultiCriteriaOptimizerBundle
+
+
+class TestBundleRegistry(unittest.TestCase):
+    def setUp(self):
+        self.plugin = BundleRegistryPlugin()
+        self.app = Application([self.plugin])
+        self.app.start()
+        self.app.stop()
+
+    def test_initialization(self):
+        self.assertEqual(self.plugin.mco_bundles, [])
+        self.assertEqual(self.plugin.data_source_bundles, [])
+        self.assertEqual(self.plugin.kpi_calculator_bundles, [])
+
+
+class BaseBDSSPlugin(Plugin):
+    mco_bundles = List(
+        IMultiCriteriaOptimizerBundle,
+        contributes_to='force.bdss.mco.bundles'
+    )
+
+    #: A list of the available Data Sources.
+    #: It will be populated by plugins.
+    data_source_bundles = List(
+        IDataSourceBundle,
+        contributes_to='force.bdss.data_sources.bundles')
+
+    kpi_calculator_bundles = List(
+        IKPICalculatorBundle,
+        contributes_to='force.bdss.kpi_calculators.bundles'
+    )
+
+
+class MySuperPlugin(BaseBDSSPlugin):
+    def _mco_bundles_default(self):
+        return [mock.Mock(spec=IMultiCriteriaOptimizerBundle,
+                          id=bundle_id("enthought", "mco1"))]
+
+    def _data_source_bundles_default(self):
+        return [mock.Mock(spec=IDataSourceBundle,
+                          id=bundle_id("enthought", "ds1")),
+                mock.Mock(spec=IDataSourceBundle,
+                          id=bundle_id("enthought", "ds2"))]
+
+    def _kpi_calculator_bundles_default(self):
+        return [mock.Mock(spec=IKPICalculatorBundle,
+                          id=bundle_id("enthought", "kpi1")),
+                mock.Mock(spec=IKPICalculatorBundle,
+                          id=bundle_id("enthought", "kpi2")),
+                mock.Mock(spec=IKPICalculatorBundle,
+                          id=bundle_id("enthought", "kpi3"))]
+
+
+class TestBundleRegistryWithContent(unittest.TestCase):
+    def setUp(self):
+        self.plugin = BundleRegistryPlugin()
+        self.app = Application([self.plugin, MySuperPlugin()])
+        self.app.start()
+        self.app.stop()
+
+    def test_initialization(self):
+        self.assertEqual(len(self.plugin.mco_bundles), 1)
+        self.assertEqual(len(self.plugin.data_source_bundles), 2)
+        self.assertEqual(len(self.plugin.kpi_calculator_bundles), 3)
+
+    def test_lookup(self):
+        id = bundle_id("enthought", "mco1")
+        self.assertEqual(self.plugin.mco_bundle_by_id(id).id, id)
+
+        for entry in ["ds1", "ds2"]:
+            id = bundle_id("enthought", entry)
+            self.assertEqual(self.plugin.data_source_bundle_by_id(id).id, id)
+
+        for entry in ["kpi1", "kpi2", "kpi3"]:
+            id = bundle_id("enthought", entry)
+            self.assertEqual(self.plugin.kpi_calculator_bundle_by_id(id).id,
+                             id)
+
+if __name__ == '__main__':
+    unittest.main()