diff --git a/force_bdss/tests/probe_classes.py b/force_bdss/tests/probe_classes.py
index f2b99f22ea790415286cd25001d4cbf72169c12b..ab5a3e399ed9f80491691f09d63ee22b63751da9 100644
--- a/force_bdss/tests/probe_classes.py
+++ b/force_bdss/tests/probe_classes.py
@@ -5,7 +5,8 @@ except ImportError:
 
 from envisage.plugin import Plugin
 
-from traits.api import HasStrictTraits, Bool, Function, Str, Int, Dict
+from traits.api import (HasStrictTraits, Bool, Function, Str, Int, Dict,
+                        on_trait_change)
 
 from force_bdss.api import (
     BaseKPICalculatorFactory, BaseKPICalculatorModel, BaseKPICalculator,
@@ -13,15 +14,9 @@ from force_bdss.api import (
 )
 
 
-class ProbeEvaluator(HasStrictTraits):
+class ProbeEvaluator(BaseKPICalculator):
     run_function = Function
 
-    input_slots_type = Str('PRESSURE')
-    output_slots_type = Str('PRESSURE')
-
-    input_slots_size = Int(0)
-    output_slots_size = Int(0)
-
     run_called = Bool(False)
     slots_called = Bool(False)
 
@@ -32,11 +27,11 @@ class ProbeEvaluator(HasStrictTraits):
     def slots(self, model):
         self.slots_called = True
         return (
-            tuple(Slot(type=self.input_slots_type)
-                  for _ in range(self.input_slots_size))
+            tuple(Slot(type=model.input_slots_type)
+                  for _ in range(model.input_slots_size))
         ), (
-            tuple(Slot(type=self.output_slots_type)
-                  for _ in range(self.output_slots_size))
+            tuple(Slot(type=model.output_slots_type)
+                  for _ in range(model.output_slots_size))
         )
 
 
@@ -59,17 +54,17 @@ class ProbeEvaluatorFactory(HasStrictTraits):
     model_data = Dict()
 
 
-class ProbeKPICalculator(BaseKPICalculator, ProbeEvaluator):
-    pass
-
-
 class ProbeKPICalculatorModel(BaseKPICalculatorModel):
-    def __init__(self, factory, model_data, *args, **kwargs):
-        for key, value in model_data.items():
-            setattr(self, key, value)
+    input_slots_type = Str('PRESSURE')
+    output_slots_type = Str('PRESSURE')
+
+    input_slots_size = Int(0)
+    output_slots_size = Int(0)
 
-        super(ProbeKPICalculatorModel, self).__init__(
-            self, factory, *args, **kwargs)
+    @on_trait_change('input_slots_type,output_slots_type,'
+                     'input_slots_size,output_slots_size')
+    def update_slots(self):
+        self.changes_slots = True
 
 
 class ProbeKPICalculatorFactory(BaseKPICalculatorFactory,
@@ -77,15 +72,19 @@ class ProbeKPICalculatorFactory(BaseKPICalculatorFactory,
     id = Str('enthought.test.kpi_calculator')
     name = Str('test_kpi_calculator')
 
-    def create_model(self, model_data=None):
-        return ProbeKPICalculatorModel(self, self.model_data)
+    model_class = ProbeKPICalculatorModel
 
-    def create_kpi_calculator(self):
-        return ProbeKPICalculator(
+    def create_model(self, model_data=None):
+        return self.model_class(
             factory=self,
-            run_function=self.run_function,
             input_slots_type=self.input_slots_type,
             output_slots_type=self.output_slots_type,
             input_slots_size=self.input_slots_size,
             output_slots_size=self.output_slots_size
         )
+
+    def create_kpi_calculator(self):
+        return ProbeEvaluator(
+            factory=self,
+            run_function=self.run_function,
+        )