diff --git a/beat/core/experiment.py b/beat/core/experiment.py
index a901c9271178f53f6117cf8adf32480a3bb2e10f..65533af8f31554ca563186bb260f9412b5cf4be0 100644
--- a/beat/core/experiment.py
+++ b/beat/core/experiment.py
@@ -52,7 +52,6 @@ from . import algorithm
 from . import schema
 from . import database
 from . import toolchain
-from . import prototypes
 from . import hash
 
 
@@ -233,12 +232,10 @@ class Experiment(object):
         self.data = None
         self.errors = []
 
-        if data is None:  # loads prototype and validates it
-
-            experiment_data, self.errors = prototypes.load("experiment")
-            assert not self.errors, "\n  * %s" % "\n  *".join(self.errors)  # nosec
-            toolchain_data, self.errors = prototypes.load("toolchain")
-            assert not self.errors, "\n  * %s" % "\n  *".join(self.errors)  # nosec
+        if data is None:  # Invalid case
+            # There can't be a prototype for experiments they must be
+            # filled based on the toolchain and the content of the prefix
+            raise RuntimeError("Experiments can't have default implementation")
 
         elif isinstance(data, (tuple, list)):  # the user has passed a tuple
 
diff --git a/beat/core/test/test_experiment_loading.py b/beat/core/test/test_experiment_loading.py
index 311ee32ff2af275954cc93c47498afab8ba51b47..e3c6fdd7969676a6b9aae2b36c091c23cb2d9049 100644
--- a/beat/core/test/test_experiment_loading.py
+++ b/beat/core/test/test_experiment_loading.py
@@ -42,6 +42,17 @@ from . import prefix, tmp_prefix
 from .utils import cleanup
 
 
+# ----------------------------------------------------------
+
+
+@nose.tools.raises(RuntimeError)
+def test_load_default_experiment_fails():
+    Experiment(prefix, data=None)
+
+
+# ----------------------------------------------------------
+
+
 def test_load_valid_experiment():
 
     experiment = Experiment(prefix, "user/integers_addition/1/integers_addition")