diff --git a/bob/fusion/base/algorithm/Algorithm.py b/bob/fusion/base/algorithm/Algorithm.py
index f08ab93265b30545ecf0c7742c6e05d2b43d88e4..ac7819735164c14c9d3319bb0a8a0c710c443cd9 100644
--- a/bob/fusion/base/algorithm/Algorithm.py
+++ b/bob/fusion/base/algorithm/Algorithm.py
@@ -112,10 +112,11 @@ class Algorithm(object):
       extensions such as model_file and model_file[:-3]+'hdf5'.
     """
     # support for bob machines
-    if hasattr(self, "machine"):
-      self.save_bob(model_file)
+    if hasattr(self, "custom_save"):
+      self.custom_save(model_file)
     else:
       with open(model_file, "wb") as f:
+        pickle.dump(type(self), f)
         pickle.dump(self, f)
 
   def load(self, model_file):
@@ -128,46 +129,8 @@ class Algorithm(object):
       A new instance of the loaded algorithm.
     """
     with open(model_file, "rb") as f:
-      temp = pickle.load(f)
-    if isinstance(temp, Algorithm):
-      return temp
-    else:
-      return self.load_bob(model_file)
-
-  def _get_hdf5_file(self, model_file):
-    return model_file[:-3] + 'hdf5'
-
-  def save_bob(self, model_file):
-    # dump preprocessors in a pickle file because
-    # we don't know how they look like
-    # saves the class to create it later.
-    with open(model_file, 'wb') as f:
-      pickle.dump(self.preprocessors, f)
-      pickle.dump(type(self), f)
-      # just for consistent string representation
-      pickle.dump(self._kwargs, f)
-
-    d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file), "w")
-    try:
-      self.machine.save(d5)
-    finally:
-      d5.close()
-
-  def load_bob(self, model_file):
-    # load preprocessors and the class
-    with open(model_file, "rb") as f:
-      preprocessors = pickle.load(f)
-      myclass = pickle.load(f)
-      _kwargs = pickle.load(f)
-
-    myinstance = myclass(preprocessors=preprocessors)
-    # just for consistent string representation
-    myinstance._kwargs.update(_kwargs)
-
-    d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file))
-    try:
-      myinstance.machine.load(d5)
-    finally:
-      d5.close()
-
-    return myinstance
+      algo_class = pickle.load(f)
+      algo = algo_class()
+      if not hasattr(algo, 'custom_save'):
+        return pickle.load(f)
+    return algo.load(model_file)
diff --git a/bob/fusion/base/algorithm/AlgorithmBob.py b/bob/fusion/base/algorithm/AlgorithmBob.py
new file mode 100644
index 0000000000000000000000000000000000000000..ed5c3eb6af51f054a8ed45c4fa3569bb6647a1fa
--- /dev/null
+++ b/bob/fusion/base/algorithm/AlgorithmBob.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+from __future__ import division
+from __future__ import absolute_import
+
+import pickle
+from .Algorithm import Algorithm
+
+import bob.core
+logger = bob.core.log.setup("bob.fusion.base")
+
+
+class AlgorithmBob(Algorithm):
+  """A class to be used in score fusion using bob machines."""
+
+  def _get_hdf5_file(self, model_file):
+    return model_file[:-3] + 'hdf5'
+
+  def custom_save(self, model_file):
+    # dump preprocessors in a pickle file because
+    # we don't know how they look like
+    # saves the class to create it later.
+    with open(model_file, 'wb') as f:
+      pickle.dump(type(self), f)
+      pickle.dump(self.preprocessors, f)
+      # just for consistent string representation
+      pickle.dump(self._kwargs, f)
+
+    d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file), "w")
+    try:
+      self.machine.save(d5)
+    finally:
+      d5.close()
+
+  def load(self, model_file):
+    # load preprocessors and the class
+    with open(model_file, "rb") as f:
+      myclass = pickle.load(f)
+      preprocessors = pickle.load(f)
+      _kwargs = pickle.load(f)
+
+    myinstance = myclass(preprocessors=preprocessors)
+    # just for consistent string representation
+    myinstance._kwargs.update(_kwargs)
+
+    d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file))
+    try:
+      myinstance.machine.load(d5)
+    finally:
+      d5.close()
+
+    return myinstance
diff --git a/bob/fusion/base/algorithm/LLR.py b/bob/fusion/base/algorithm/LLR.py
index e6373449d52fa1e529b344246f2244bf0b4dd943..fa4fcac961c7b2bb74339b17d342876207918eb3 100644
--- a/bob/fusion/base/algorithm/LLR.py
+++ b/bob/fusion/base/algorithm/LLR.py
@@ -5,13 +5,13 @@ from __future__ import absolute_import
 
 import bob.learn.linear
 
-from .Algorithm import Algorithm
+from .AlgorithmBob import AlgorithmBob
 
 import logging
 logger = logging.getLogger("bob.fusion.base")
 
 
-class LLR(Algorithm):
+class LLR(AlgorithmBob):
   """LLR Score fusion using Bob"""
 
   def __init__(self,
diff --git a/bob/fusion/base/algorithm/MLP.py b/bob/fusion/base/algorithm/MLP.py
index f707761d84b5bd9553a11f5a1d8a80d31a41076f..e3898e88ebbb5453cadea42b14039e78e4be08aa 100644
--- a/bob/fusion/base/algorithm/MLP.py
+++ b/bob/fusion/base/algorithm/MLP.py
@@ -6,16 +6,15 @@ from __future__ import absolute_import
 import bob.learn.mlp
 import bob.core.random
 import bob.io.base
-import pickle
 
-from .Algorithm import Algorithm
+from .AlgorithmBob import AlgorithmBob
 from .mlp_train_helper import MLPTrainer
 
 import bob.core
 logger = bob.core.log.setup("bob.fusion.base")
 
 
-class MLP(Algorithm):
+class MLP(AlgorithmBob):
   """This MLP is implemented using the bob tools.
   The preprocessors used with this class should be pickleable.
   """
diff --git a/bob/fusion/base/algorithm/__init__.py b/bob/fusion/base/algorithm/__init__.py
index 25f3fc12a4df60c9fcd68cdf3622472347ef47e4..0927c2906fa6757fca376384443715d82e1353a3 100644
--- a/bob/fusion/base/algorithm/__init__.py
+++ b/bob/fusion/base/algorithm/__init__.py
@@ -1,4 +1,5 @@
 from .Algorithm import Algorithm
+from .AlgorithmBob import AlgorithmBob
 from .Weighted_Sum import Weighted_Sum
 from .MLP import MLP
 from .LLR import LLR
diff --git a/bob/fusion/base/data/scores-dev-1 b/bob/fusion/base/data/scores-dev-1
new file mode 100644
index 0000000000000000000000000000000000000000..b414412f959fb9f9d9f9e3a25c58d076c6b3d234
--- /dev/null
+++ b/bob/fusion/base/data/scores-dev-1
@@ -0,0 +1,120 @@
+10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_1 -0.318633920541
+10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_2 -0.334105116697
+10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_1 0.252805861224
+10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_2 0.702777920228
+10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_1 0.00330252948533
+10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_2 0.0389028510697
+10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_1 0.352103133345
+10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_2 0.519323232218
+10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_1 2.99414793238
+10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_2 3.02413769254
+10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_1 4.23217945811
+10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_2 3.65998581438
+10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_1 0.618642777295
+10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_2 0.790641184615
+10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_1 0.96680158608
+10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_2 1.04076512475
+10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_1 -0.243917884811
+10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_2 0.170069495529
+10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_1 0.214466890896
+10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_2 0.540638312006
+10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_1 1.00945246788
+10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_2 1.11408678764
+10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_1 1.20522777424
+10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_2 0.91433125148
+10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_1 0.09971911979
+10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_2 -0.0692415289283
+10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_1 0.155573348923
+10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_2 0.157940281707
+10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_1 0.174827654939
+10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_2 0.143473557873
+10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_1 0.246116509018
+10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_2 0.204360359239
+10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_1 -0.28584607523
+10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_2 -0.110143032709
+10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.0661275844434
+10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_2 0.102937028159
+10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_1 1.32064641875
+10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_2 1.44667204715
+10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_1 0.970468437655
+10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_2 1.15594520334
+10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_1 0.452246749649
+10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_2 0.199186033759
+10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_1 0.594444576095
+10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_2 0.854076431222
+10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_1 0.0272281771803
+10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_2 -0.0180496339542
+10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_1 -0.155477404708
+10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_2 -0.190028398658
+10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_1 0.623213673157
+10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_2 0.546679984599
+10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_1 0.708970264386
+10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_2 0.910725034301
+10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_1 1.17092487508
+10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_2 1.08674214224
+10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_1 0.758114229035
+10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_2 0.847617908084
+10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_1 -0.058600737167
+10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.104559929764
+10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_1 -0.297325188264
+10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_2 -0.315611829528
+10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_1 -0.338885781134
+10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_2 -0.396386110547
+10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_1 0.27695867411
+10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_2 0.629372727745
+10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_1 -0.0779415376562
+10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_2 -0.117451818462
+10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_1 0.475641010627
+10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_2 0.401602755663
+10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_1 3.67275601038
+10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_2 3.00946766315
+10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_1 4.1992760054
+10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_2 3.72673297367
+10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_1 0.298052086196
+10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_2 0.180311691078
+10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_1 0.334995166459
+10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_2 0.70676592459
+10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_1 0.485422400304
+10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_2 0.420643843172
+10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_1 0.33368797815
+10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_2 0.419557624002
+10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_1 1.05151951779
+10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_2 1.09434197058
+10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_1 0.948221391514
+10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_2 0.470197583425
+10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_1 0.0839194520867
+10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_2 -0.0962990993329
+10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_1 0.0839858236999
+10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_2 0.190758252887
+10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_1 0.159024941074
+10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_2 0.0863571472242
+10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_1 0.140618526752
+10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_2 0.394483045627
+10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_1 0.102818173687
+10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_2 -0.0685237005246
+10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.111603373141
+10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_2 -0.125335323934
+10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_1 1.68330993157
+10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_2 1.57146276564
+10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_1 1.30560496355
+10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_2 1.25600474506
+10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_1 0.424123808151
+10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_2 0.689710773846
+10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_1 0.693173490627
+10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_2 0.813767480764
+10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_1 -0.0588316045462
+10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_2 0.0181225187347
+10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_1 -0.252444130247
+10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_2 -0.119835121422
+10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_1 0.619033030322
+10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_2 0.56370903563
+10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_1 0.847493249059
+10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_2 0.629870326683
+10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_1 1.08190622218
+10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_2 1.08417944695
+10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_1 0.61584946571
+10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_2 0.781733644349
+10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_1 -0.11594615243
+10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.0871342894673
+10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_1 -0.317871493896
+10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_2 -0.255767423646
diff --git a/bob/fusion/base/data/scores-dev-2 b/bob/fusion/base/data/scores-dev-2
new file mode 100644
index 0000000000000000000000000000000000000000..e8d6076caa4fcd4570d9af9f52b480e70fd165db
--- /dev/null
+++ b/bob/fusion/base/data/scores-dev-2
@@ -0,0 +1,120 @@
+10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_1 -0.819592546493
+10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_2 -0.701318681815
+10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_1 -0.689818917083
+10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_2 0.283885410933
+10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_1 0.176276754818
+10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_2 -0.467957169417
+10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_1 0.10703664805
+10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_2 -0.102192907775
+10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_1 -0.648235611072
+10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_2 -0.640703795069
+10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_1 -1.12272337429
+10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_2 0.776749880239
+10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_1 0.723382403324
+10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_2 0.011921723028
+10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_1 -0.490223611204
+10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_2 -0.737575522158
+10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_1 0.155083111286
+10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_2 -0.686133500581
+10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_1 1.407974679
+10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_2 0.69255733122
+10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_1 0.377652831263
+10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_2 0.498085276989
+10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_1 1.0918108929
+10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_2 2.25013017322
+10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_1 -1.33317257051
+10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_2 0.684164206269
+10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_1 -1.58015971456
+10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_2 1.07561363744
+10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_1 -0.32505028696
+10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_2 0.0390999072708
+10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_1 -1.32460109695
+10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_2 1.07726088027
+10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_1 -0.94151127114
+10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_2 0.554039809922
+10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.498423065207
+10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_2 -0.271453517296
+10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_1 -0.931940865888
+10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_2 -0.497819175667
+10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_1 0.946281707848
+10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_2 -0.758072563174
+10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_1 1.89764860151
+10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_2 0.520362341253
+10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_1 0.535825158779
+10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_2 -0.491098836367
+10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_1 0.6391472894
+10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_2 0.561188874144
+10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_1 0.0875401864258
+10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_2 2.15276585982
+10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_1 1.18079560013
+10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_2 0.7634885964
+10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_1 0.820448410195
+10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_2 0.813622879806
+10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_1 1.91077525618
+10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_2 -0.46812893238
+10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_1 1.19940291443
+10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_2 -2.10602960765
+10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_1 0.597769821746
+10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.63962547561
+10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_1 0.076063120914
+10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_2 0.928022170138
+10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_1 0.894652889824
+10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_2 -1.82940280449
+10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_1 -0.0645761368867
+10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_2 0.595956251001
+10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_1 0.596551706848
+10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_2 2.10654043435
+10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_1 0.091699190244
+10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_2 -2.40867182369
+10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_1 -0.0423541288276
+10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_2 -0.349726905485
+10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_1 -0.550846399741
+10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_2 -0.573799328107
+10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_1 1.43186731447
+10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_2 0.936544488612
+10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_1 -0.288590713683
+10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_2 0.0550922657621
+10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_1 0.0669810609156
+10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_2 -0.565455653876
+10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_1 -0.114808173919
+10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_2 -1.83628702925
+10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_1 0.0181707867156
+10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_2 -0.448059940902
+10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_1 -0.638877395264
+10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_2 -0.441976606104
+10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_1 -0.891027087503
+10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_2 0.930407521333
+10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_1 -0.351785616414
+10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_2 0.323535563909
+10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_1 -1.66763446121
+10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_2 2.03863268211
+10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_1 0.62967380363
+10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_2 0.697573808171
+10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_1 0.151975291762
+10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_2 0.842530979993
+10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.0441952089634
+10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_2 0.157322192765
+10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_1 0.913040286422
+10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_2 0.829029010289
+10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_1 -0.74454016056
+10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_2 0.309883965537
+10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_1 -1.09123572398
+10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_2 0.280676072763
+10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_1 -0.541879950901
+10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_2 -0.357352554037
+10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_1 -0.187838715444
+10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_2 0.0622730052476
+10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_1 -2.02159824352
+10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_2 -0.251157264224
+10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_1 0.337102441338
+10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_2 0.604557408652
+10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_1 -0.292850493715
+10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_2 0.673908751159
+10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_1 0.438695893249
+10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_2 1.39447811375
+10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_1 -1.07100143607
+10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_2 -0.859677522056
+10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_1 -0.728412378518
+10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.212066000106
+10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_1 1.09812923421
+10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_2 0.524758479954
diff --git a/bob/fusion/base/data/scores-eval-1 b/bob/fusion/base/data/scores-eval-1
new file mode 100644
index 0000000000000000000000000000000000000000..e15151e6f71891c9d4d7059db2a2ceb7b446b99a
--- /dev/null
+++ b/bob/fusion/base/data/scores-eval-1
@@ -0,0 +1,160 @@
+102 9 010/test/real/client009_session01_webcam_authenticate_adverse_1 0.205744714267
+102 9 010/test/real/client009_session01_webcam_authenticate_adverse_2 0.267440425332
+102 9 010/test/real/client009_session01_webcam_authenticate_controlled_1 0.112965895686
+102 9 010/test/real/client009_session01_webcam_authenticate_controlled_2 -0.024272173296
+102 11 010/test/real/client011_session01_webcam_authenticate_adverse_1 0.353201266354
+102 11 010/test/real/client011_session01_webcam_authenticate_adverse_2 0.0179000095838
+102 11 010/test/real/client011_session01_webcam_authenticate_controlled_1 0.331493736048
+102 11 010/test/real/client011_session01_webcam_authenticate_controlled_2 0.270547902317
+102 13 010/test/real/client013_session01_webcam_authenticate_adverse_1 0.473512637744
+102 13 010/test/real/client013_session01_webcam_authenticate_adverse_2 0.507131148975
+102 13 010/test/real/client013_session01_webcam_authenticate_controlled_1 0.683895879553
+102 13 010/test/real/client013_session01_webcam_authenticate_controlled_2 0.793478529457
+102 14 010/test/real/client014_session01_webcam_authenticate_adverse_1 0.826530607711
+102 14 010/test/real/client014_session01_webcam_authenticate_adverse_2 0.672834048494
+102 14 010/test/real/client014_session01_webcam_authenticate_controlled_1 0.656453976376
+102 14 010/test/real/client014_session01_webcam_authenticate_controlled_2 0.868956477769
+102 19 010/test/real/client019_session01_webcam_authenticate_adverse_1 0.513500982681
+102 19 010/test/real/client019_session01_webcam_authenticate_adverse_2 0.607311627892
+102 19 010/test/real/client019_session01_webcam_authenticate_controlled_1 0.466002939923
+102 19 010/test/real/client019_session01_webcam_authenticate_controlled_2 0.616226887387
+102 20 010/test/real/client020_session01_webcam_authenticate_adverse_1 0.985449637221
+102 20 010/test/real/client020_session01_webcam_authenticate_adverse_2 0.928613660041
+102 20 010/test/real/client020_session01_webcam_authenticate_controlled_1 0.614957615925
+102 20 010/test/real/client020_session01_webcam_authenticate_controlled_2 0.797460866296
+102 21 010/test/real/client021_session01_webcam_authenticate_adverse_1 0.749048063428
+102 21 010/test/real/client021_session01_webcam_authenticate_adverse_2 0.824522496791
+102 21 010/test/real/client021_session01_webcam_authenticate_controlled_1 0.859512965179
+102 21 010/test/real/client021_session01_webcam_authenticate_controlled_2 0.969166350681
+102 23 010/test/real/client023_session01_webcam_authenticate_adverse_1 0.106076588145
+102 23 010/test/real/client023_session01_webcam_authenticate_adverse_2 -0.0302071010596
+102 23 010/test/real/client023_session01_webcam_authenticate_controlled_1 0.0716394777749
+102 23 010/test/real/client023_session01_webcam_authenticate_controlled_2 0.0502010369715
+102 24 010/test/real/client024_session01_webcam_authenticate_adverse_1 0.580370624219
+102 24 010/test/real/client024_session01_webcam_authenticate_adverse_2 0.101708816411
+102 24 010/test/real/client024_session01_webcam_authenticate_controlled_1 0.581126261896
+102 24 010/test/real/client024_session01_webcam_authenticate_controlled_2 0.589923047259
+102 26 010/test/real/client026_session01_webcam_authenticate_adverse_1 0.387797892707
+102 26 010/test/real/client026_session01_webcam_authenticate_adverse_2 0.35367378094
+102 26 010/test/real/client026_session01_webcam_authenticate_controlled_1 0.485462981075
+102 26 010/test/real/client026_session01_webcam_authenticate_controlled_2 0.493701353092
+102 28 010/test/real/client028_session01_webcam_authenticate_adverse_1 0.713932101259
+102 28 010/test/real/client028_session01_webcam_authenticate_adverse_2 0.206032077179
+102 28 010/test/real/client028_session01_webcam_authenticate_controlled_1 0.343024599315
+102 28 010/test/real/client028_session01_webcam_authenticate_controlled_2 0.0161013713602
+102 31 010/test/real/client031_session01_webcam_authenticate_adverse_1 -0.151603972521
+102 31 010/test/real/client031_session01_webcam_authenticate_adverse_2 -0.00810566410117
+102 31 010/test/real/client031_session01_webcam_authenticate_controlled_1 -0.12910327803
+102 31 010/test/real/client031_session01_webcam_authenticate_controlled_2 -0.151182748693
+102 102 010/test/real/client102_session01_webcam_authenticate_adverse_1 2.52649489901
+102 102 010/test/real/client102_session01_webcam_authenticate_adverse_2 2.95328699907
+102 102 010/test/real/client102_session01_webcam_authenticate_controlled_1 3.81153110245
+102 102 010/test/real/client102_session01_webcam_authenticate_controlled_2 4.1632625589
+102 104 010/test/real/client104_session01_webcam_authenticate_adverse_1 0.0164272118809
+102 104 010/test/real/client104_session01_webcam_authenticate_adverse_2 0.034107170534
+102 104 010/test/real/client104_session01_webcam_authenticate_controlled_1 0.134224245971
+102 104 010/test/real/client104_session01_webcam_authenticate_controlled_2 0.116849618406
+102 106 010/test/real/client106_session01_webcam_authenticate_adverse_1 0.226905398139
+102 106 010/test/real/client106_session01_webcam_authenticate_adverse_2 0.00161059894666
+102 106 010/test/real/client106_session01_webcam_authenticate_controlled_1 0.289801994038
+102 106 010/test/real/client106_session01_webcam_authenticate_controlled_2 0.481776704166
+102 107 010/test/real/client107_session01_webcam_authenticate_adverse_1 0.431159211277
+102 107 010/test/real/client107_session01_webcam_authenticate_adverse_2 0.173017290636
+102 107 010/test/real/client107_session01_webcam_authenticate_controlled_1 0.204933754513
+102 107 010/test/real/client107_session01_webcam_authenticate_controlled_2 0.221778390331
+102 109 010/test/real/client109_session01_webcam_authenticate_adverse_1 -0.139080399077
+102 109 010/test/real/client109_session01_webcam_authenticate_adverse_2 -0.193639274219
+102 109 010/test/real/client109_session01_webcam_authenticate_controlled_1 -0.282825462976
+102 109 010/test/real/client109_session01_webcam_authenticate_controlled_2 -0.319517654844
+102 112 010/test/real/client112_session01_webcam_authenticate_adverse_1 0.36171303165
+102 112 010/test/real/client112_session01_webcam_authenticate_adverse_2 0.304084756476
+102 112 010/test/real/client112_session01_webcam_authenticate_controlled_1 0.856310657414
+102 112 010/test/real/client112_session01_webcam_authenticate_controlled_2 0.576238267707
+102 115 010/test/real/client115_session01_webcam_authenticate_adverse_1 1.02292778778
+102 115 010/test/real/client115_session01_webcam_authenticate_adverse_2 1.05614557049
+102 115 010/test/real/client115_session01_webcam_authenticate_controlled_1 0.871422229855
+102 115 010/test/real/client115_session01_webcam_authenticate_controlled_2 1.00502290399
+102 117 010/test/real/client117_session01_webcam_authenticate_adverse_1 0.43000681028
+102 117 010/test/real/client117_session01_webcam_authenticate_adverse_2 0.542116548077
+102 117 010/test/real/client117_session01_webcam_authenticate_controlled_1 0.757988829289
+102 117 010/test/real/client117_session01_webcam_authenticate_controlled_2 0.469510066782
+102 9 020/test/real/client009_session01_webcam_authenticate_adverse_1 0.268685242863
+102 9 020/test/real/client009_session01_webcam_authenticate_adverse_2 0.264433932505
+102 9 020/test/real/client009_session01_webcam_authenticate_controlled_1 0.102163343099
+102 9 020/test/real/client009_session01_webcam_authenticate_controlled_2 0.191492100759
+102 11 020/test/real/client011_session01_webcam_authenticate_adverse_1 0.449055410691
+102 11 020/test/real/client011_session01_webcam_authenticate_adverse_2 0.443942290321
+102 11 020/test/real/client011_session01_webcam_authenticate_controlled_1 0.35841581767
+102 11 020/test/real/client011_session01_webcam_authenticate_controlled_2 0.23040601679
+102 13 020/test/real/client013_session01_webcam_authenticate_adverse_1 0.518207754939
+102 13 020/test/real/client013_session01_webcam_authenticate_adverse_2 0.535205992102
+102 13 020/test/real/client013_session01_webcam_authenticate_controlled_1 0.737519223775
+102 13 020/test/real/client013_session01_webcam_authenticate_controlled_2 0.83390915957
+102 14 020/test/real/client014_session01_webcam_authenticate_adverse_1 0.853884420146
+102 14 020/test/real/client014_session01_webcam_authenticate_adverse_2 0.830077670388
+102 14 020/test/real/client014_session01_webcam_authenticate_controlled_1 0.639280081717
+102 14 020/test/real/client014_session01_webcam_authenticate_controlled_2 0.880253783225
+102 19 020/test/real/client019_session01_webcam_authenticate_adverse_1 0.491002603652
+102 19 020/test/real/client019_session01_webcam_authenticate_adverse_2 0.502669892088
+102 19 020/test/real/client019_session01_webcam_authenticate_controlled_1 0.564119325258
+102 19 020/test/real/client019_session01_webcam_authenticate_controlled_2 0.551950859338
+102 20 020/test/real/client020_session01_webcam_authenticate_adverse_1 0.768666706157
+102 20 020/test/real/client020_session01_webcam_authenticate_adverse_2 0.986172971169
+102 20 020/test/real/client020_session01_webcam_authenticate_controlled_1 0.706326454098
+102 20 020/test/real/client020_session01_webcam_authenticate_controlled_2 0.724592314211
+102 21 020/test/real/client021_session01_webcam_authenticate_adverse_1 0.769503614398
+102 21 020/test/real/client021_session01_webcam_authenticate_adverse_2 0.883332838333
+102 21 020/test/real/client021_session01_webcam_authenticate_controlled_1 0.898735057482
+102 21 020/test/real/client021_session01_webcam_authenticate_controlled_2 0.962021216882
+102 23 020/test/real/client023_session01_webcam_authenticate_adverse_1 0.0651630753668
+102 23 020/test/real/client023_session01_webcam_authenticate_adverse_2 0.0188472957821
+102 23 020/test/real/client023_session01_webcam_authenticate_controlled_1 0.0940398328667
+102 23 020/test/real/client023_session01_webcam_authenticate_controlled_2 0.153870376701
+102 24 020/test/real/client024_session01_webcam_authenticate_adverse_1 0.577405121626
+102 24 020/test/real/client024_session01_webcam_authenticate_adverse_2 0.234134683932
+102 24 020/test/real/client024_session01_webcam_authenticate_controlled_1 0.603189554753
+102 24 020/test/real/client024_session01_webcam_authenticate_controlled_2 0.631918989901
+102 26 020/test/real/client026_session01_webcam_authenticate_adverse_1 0.31449788358
+102 26 020/test/real/client026_session01_webcam_authenticate_adverse_2 0.286009187121
+102 26 020/test/real/client026_session01_webcam_authenticate_controlled_1 0.554325015076
+102 26 020/test/real/client026_session01_webcam_authenticate_controlled_2 0.389669224063
+102 28 020/test/real/client028_session01_webcam_authenticate_adverse_1 0.174906167338
+102 28 020/test/real/client028_session01_webcam_authenticate_adverse_2 0.121731076104
+102 28 020/test/real/client028_session01_webcam_authenticate_controlled_1 0.301035398359
+102 28 020/test/real/client028_session01_webcam_authenticate_controlled_2 -0.066457389056
+102 31 020/test/real/client031_session01_webcam_authenticate_adverse_1 -0.00741360995993
+102 31 020/test/real/client031_session01_webcam_authenticate_adverse_2 -0.0165972134324
+102 31 020/test/real/client031_session01_webcam_authenticate_controlled_1 -0.087431900315
+102 31 020/test/real/client031_session01_webcam_authenticate_controlled_2 -0.175326321457
+102 102 020/test/real/client102_session01_webcam_authenticate_adverse_1 2.41703254714
+102 102 020/test/real/client102_session01_webcam_authenticate_adverse_2 3.00845990838
+102 102 020/test/real/client102_session01_webcam_authenticate_controlled_1 3.61495943796
+102 102 020/test/real/client102_session01_webcam_authenticate_controlled_2 4.32712650583
+102 104 020/test/real/client104_session01_webcam_authenticate_adverse_1 -0.0336199606472
+102 104 020/test/real/client104_session01_webcam_authenticate_adverse_2 0.0466196507281
+102 104 020/test/real/client104_session01_webcam_authenticate_controlled_1 0.0845820293727
+102 104 020/test/real/client104_session01_webcam_authenticate_controlled_2 0.210167563839
+102 106 020/test/real/client106_session01_webcam_authenticate_adverse_1 0.17653533347
+102 106 020/test/real/client106_session01_webcam_authenticate_adverse_2 0.109001145866
+102 106 020/test/real/client106_session01_webcam_authenticate_controlled_1 0.340240328781
+102 106 020/test/real/client106_session01_webcam_authenticate_controlled_2 0.515026000834
+102 107 020/test/real/client107_session01_webcam_authenticate_adverse_1 0.388473749812
+102 107 020/test/real/client107_session01_webcam_authenticate_adverse_2 0.343791222902
+102 107 020/test/real/client107_session01_webcam_authenticate_controlled_1 0.0960969050715
+102 107 020/test/real/client107_session01_webcam_authenticate_controlled_2 0.0174673373273
+102 109 020/test/real/client109_session01_webcam_authenticate_adverse_1 -0.119729432365
+102 109 020/test/real/client109_session01_webcam_authenticate_adverse_2 -0.29001178619
+102 109 020/test/real/client109_session01_webcam_authenticate_controlled_1 -0.319605739038
+102 109 020/test/real/client109_session01_webcam_authenticate_controlled_2 -0.314033650393
+102 112 020/test/real/client112_session01_webcam_authenticate_adverse_1 0.350682641713
+102 112 020/test/real/client112_session01_webcam_authenticate_adverse_2 0.438412156756
+102 112 020/test/real/client112_session01_webcam_authenticate_controlled_1 0.7523373368
+102 112 020/test/real/client112_session01_webcam_authenticate_controlled_2 0.75585768958
+102 115 020/test/real/client115_session01_webcam_authenticate_adverse_1 1.07321971664
+102 115 020/test/real/client115_session01_webcam_authenticate_adverse_2 1.12813870399
+102 115 020/test/real/client115_session01_webcam_authenticate_controlled_1 0.991680745076
+102 115 020/test/real/client115_session01_webcam_authenticate_controlled_2 0.971316657652
+102 117 020/test/real/client117_session01_webcam_authenticate_adverse_1 0.726090340533
+102 117 020/test/real/client117_session01_webcam_authenticate_adverse_2 0.533985909069
+102 117 020/test/real/client117_session01_webcam_authenticate_controlled_1 0.708304912275
+102 117 020/test/real/client117_session01_webcam_authenticate_controlled_2 0.627750123321
diff --git a/bob/fusion/base/data/scores-eval-2 b/bob/fusion/base/data/scores-eval-2
new file mode 100644
index 0000000000000000000000000000000000000000..f0dd275c6b4a7fea4f83ba23aa99f412567929e6
--- /dev/null
+++ b/bob/fusion/base/data/scores-eval-2
@@ -0,0 +1,160 @@
+102 9 010/test/real/client009_session01_webcam_authenticate_adverse_1 -1.55085701573
+102 9 010/test/real/client009_session01_webcam_authenticate_adverse_2 0.249555055537
+102 9 010/test/real/client009_session01_webcam_authenticate_controlled_1 -0.24142520733
+102 9 010/test/real/client009_session01_webcam_authenticate_controlled_2 -0.818428758744
+102 11 010/test/real/client011_session01_webcam_authenticate_adverse_1 0.413718691668
+102 11 010/test/real/client011_session01_webcam_authenticate_adverse_2 -0.423447802865
+102 11 010/test/real/client011_session01_webcam_authenticate_controlled_1 0.555298006761
+102 11 010/test/real/client011_session01_webcam_authenticate_controlled_2 -0.56452618587
+102 13 010/test/real/client013_session01_webcam_authenticate_adverse_1 3.1709337741
+102 13 010/test/real/client013_session01_webcam_authenticate_adverse_2 -0.150124688668
+102 13 010/test/real/client013_session01_webcam_authenticate_controlled_1 -0.459495525081
+102 13 010/test/real/client013_session01_webcam_authenticate_controlled_2 0.400962819366
+102 14 010/test/real/client014_session01_webcam_authenticate_adverse_1 0.737493503501
+102 14 010/test/real/client014_session01_webcam_authenticate_adverse_2 -0.0793805252158
+102 14 010/test/real/client014_session01_webcam_authenticate_controlled_1 -1.51083974247
+102 14 010/test/real/client014_session01_webcam_authenticate_controlled_2 0.575142809073
+102 19 010/test/real/client019_session01_webcam_authenticate_adverse_1 2.07056236023
+102 19 010/test/real/client019_session01_webcam_authenticate_adverse_2 -0.434983265238
+102 19 010/test/real/client019_session01_webcam_authenticate_controlled_1 -0.0553536631719
+102 19 010/test/real/client019_session01_webcam_authenticate_controlled_2 1.58799427323
+102 20 010/test/real/client020_session01_webcam_authenticate_adverse_1 0.458212671278
+102 20 010/test/real/client020_session01_webcam_authenticate_adverse_2 0.163580074279
+102 20 010/test/real/client020_session01_webcam_authenticate_controlled_1 0.528732316332
+102 20 010/test/real/client020_session01_webcam_authenticate_controlled_2 0.75649996538
+102 21 010/test/real/client021_session01_webcam_authenticate_adverse_1 0.951729884553
+102 21 010/test/real/client021_session01_webcam_authenticate_adverse_2 -0.140247285522
+102 21 010/test/real/client021_session01_webcam_authenticate_controlled_1 0.683439289359
+102 21 010/test/real/client021_session01_webcam_authenticate_controlled_2 0.238479741486
+102 23 010/test/real/client023_session01_webcam_authenticate_adverse_1 -1.78979123256
+102 23 010/test/real/client023_session01_webcam_authenticate_adverse_2 1.21567736635
+102 23 010/test/real/client023_session01_webcam_authenticate_controlled_1 0.0787405077675
+102 23 010/test/real/client023_session01_webcam_authenticate_controlled_2 1.00160630698
+102 24 010/test/real/client024_session01_webcam_authenticate_adverse_1 -0.676597374689
+102 24 010/test/real/client024_session01_webcam_authenticate_adverse_2 0.0161791557867
+102 24 010/test/real/client024_session01_webcam_authenticate_controlled_1 1.00915322011
+102 24 010/test/real/client024_session01_webcam_authenticate_controlled_2 0.429231914114
+102 26 010/test/real/client026_session01_webcam_authenticate_adverse_1 1.55425500914
+102 26 010/test/real/client026_session01_webcam_authenticate_adverse_2 -1.03246176298
+102 26 010/test/real/client026_session01_webcam_authenticate_controlled_1 0.132547457702
+102 26 010/test/real/client026_session01_webcam_authenticate_controlled_2 1.24509405948
+102 28 010/test/real/client028_session01_webcam_authenticate_adverse_1 -0.460672439433
+102 28 010/test/real/client028_session01_webcam_authenticate_adverse_2 -0.381658268812
+102 28 010/test/real/client028_session01_webcam_authenticate_controlled_1 -1.22350524221
+102 28 010/test/real/client028_session01_webcam_authenticate_controlled_2 0.705875820729
+102 31 010/test/real/client031_session01_webcam_authenticate_adverse_1 0.0822299462915
+102 31 010/test/real/client031_session01_webcam_authenticate_adverse_2 0.808081512335
+102 31 010/test/real/client031_session01_webcam_authenticate_controlled_1 0.493401772049
+102 31 010/test/real/client031_session01_webcam_authenticate_controlled_2 0.553331799422
+102 102 010/test/real/client102_session01_webcam_authenticate_adverse_1 1.41842887314
+102 102 010/test/real/client102_session01_webcam_authenticate_adverse_2 0.642368945481
+102 102 010/test/real/client102_session01_webcam_authenticate_controlled_1 0.0785840555033
+102 102 010/test/real/client102_session01_webcam_authenticate_controlled_2 -0.493324249291
+102 104 010/test/real/client104_session01_webcam_authenticate_adverse_1 1.25931828714
+102 104 010/test/real/client104_session01_webcam_authenticate_adverse_2 0.322068233361
+102 104 010/test/real/client104_session01_webcam_authenticate_controlled_1 0.464219462156
+102 104 010/test/real/client104_session01_webcam_authenticate_controlled_2 -2.21289215765
+102 106 010/test/real/client106_session01_webcam_authenticate_adverse_1 1.89650429422
+102 106 010/test/real/client106_session01_webcam_authenticate_adverse_2 -3.16752581319
+102 106 010/test/real/client106_session01_webcam_authenticate_controlled_1 -0.528328037358
+102 106 010/test/real/client106_session01_webcam_authenticate_controlled_2 -0.180946452976
+102 107 010/test/real/client107_session01_webcam_authenticate_adverse_1 -1.64955612726
+102 107 010/test/real/client107_session01_webcam_authenticate_adverse_2 -0.319190540301
+102 107 010/test/real/client107_session01_webcam_authenticate_controlled_1 1.78383923244
+102 107 010/test/real/client107_session01_webcam_authenticate_controlled_2 -1.80944627257
+102 109 010/test/real/client109_session01_webcam_authenticate_adverse_1 -0.234870525531
+102 109 010/test/real/client109_session01_webcam_authenticate_adverse_2 0.196521972111
+102 109 010/test/real/client109_session01_webcam_authenticate_controlled_1 0.643037780398
+102 109 010/test/real/client109_session01_webcam_authenticate_controlled_2 0.373835457325
+102 112 010/test/real/client112_session01_webcam_authenticate_adverse_1 1.36331932074
+102 112 010/test/real/client112_session01_webcam_authenticate_adverse_2 -0.704980582629
+102 112 010/test/real/client112_session01_webcam_authenticate_controlled_1 -0.916867613585
+102 112 010/test/real/client112_session01_webcam_authenticate_controlled_2 0.107119642863
+102 115 010/test/real/client115_session01_webcam_authenticate_adverse_1 0.215079207469
+102 115 010/test/real/client115_session01_webcam_authenticate_adverse_2 0.192431499366
+102 115 010/test/real/client115_session01_webcam_authenticate_controlled_1 -0.445816214164
+102 115 010/test/real/client115_session01_webcam_authenticate_controlled_2 -0.140518457999
+102 117 010/test/real/client117_session01_webcam_authenticate_adverse_1 -0.228845791797
+102 117 010/test/real/client117_session01_webcam_authenticate_adverse_2 -1.0025248437
+102 117 010/test/real/client117_session01_webcam_authenticate_controlled_1 0.613063645049
+102 117 010/test/real/client117_session01_webcam_authenticate_controlled_2 1.10791771985
+102 9 020/test/real/client009_session01_webcam_authenticate_adverse_1 -1.06000208938
+102 9 020/test/real/client009_session01_webcam_authenticate_adverse_2 0.549488155419
+102 9 020/test/real/client009_session01_webcam_authenticate_controlled_1 -1.36501664837
+102 9 020/test/real/client009_session01_webcam_authenticate_controlled_2 0.83627965196
+102 11 020/test/real/client011_session01_webcam_authenticate_adverse_1 0.227770672205
+102 11 020/test/real/client011_session01_webcam_authenticate_adverse_2 0.763113001277
+102 11 020/test/real/client011_session01_webcam_authenticate_controlled_1 2.96002798692
+102 11 020/test/real/client011_session01_webcam_authenticate_controlled_2 1.33867704803
+102 13 020/test/real/client013_session01_webcam_authenticate_adverse_1 0.643249758188
+102 13 020/test/real/client013_session01_webcam_authenticate_adverse_2 -0.0157973885162
+102 13 020/test/real/client013_session01_webcam_authenticate_controlled_1 -1.39303861158
+102 13 020/test/real/client013_session01_webcam_authenticate_controlled_2 -0.0583729118645
+102 14 020/test/real/client014_session01_webcam_authenticate_adverse_1 -0.616680508102
+102 14 020/test/real/client014_session01_webcam_authenticate_adverse_2 -2.00540155498
+102 14 020/test/real/client014_session01_webcam_authenticate_controlled_1 1.20946125734
+102 14 020/test/real/client014_session01_webcam_authenticate_controlled_2 1.71080626414
+102 19 020/test/real/client019_session01_webcam_authenticate_adverse_1 -1.04548786663
+102 19 020/test/real/client019_session01_webcam_authenticate_adverse_2 0.387518919066
+102 19 020/test/real/client019_session01_webcam_authenticate_controlled_1 0.0128377212048
+102 19 020/test/real/client019_session01_webcam_authenticate_controlled_2 1.63458905679
+102 20 020/test/real/client020_session01_webcam_authenticate_adverse_1 -1.09562199996
+102 20 020/test/real/client020_session01_webcam_authenticate_adverse_2 0.728009742836
+102 20 020/test/real/client020_session01_webcam_authenticate_controlled_1 -0.281243542187
+102 20 020/test/real/client020_session01_webcam_authenticate_controlled_2 -0.315861710222
+102 21 020/test/real/client021_session01_webcam_authenticate_adverse_1 1.37605222138
+102 21 020/test/real/client021_session01_webcam_authenticate_adverse_2 0.350000885786
+102 21 020/test/real/client021_session01_webcam_authenticate_controlled_1 0.29585259108
+102 21 020/test/real/client021_session01_webcam_authenticate_controlled_2 -0.638035426456
+102 23 020/test/real/client023_session01_webcam_authenticate_adverse_1 -1.9273097084
+102 23 020/test/real/client023_session01_webcam_authenticate_adverse_2 -0.182479637853
+102 23 020/test/real/client023_session01_webcam_authenticate_controlled_1 0.105741406878
+102 23 020/test/real/client023_session01_webcam_authenticate_controlled_2 0.288964024037
+102 24 020/test/real/client024_session01_webcam_authenticate_adverse_1 -0.612071180127
+102 24 020/test/real/client024_session01_webcam_authenticate_adverse_2 1.62110867112
+102 24 020/test/real/client024_session01_webcam_authenticate_controlled_1 0.298010378782
+102 24 020/test/real/client024_session01_webcam_authenticate_controlled_2 -1.09082563497
+102 26 020/test/real/client026_session01_webcam_authenticate_adverse_1 -0.46318377901
+102 26 020/test/real/client026_session01_webcam_authenticate_adverse_2 -0.594737891636
+102 26 020/test/real/client026_session01_webcam_authenticate_controlled_1 0.0202895991467
+102 26 020/test/real/client026_session01_webcam_authenticate_controlled_2 0.950871796763
+102 28 020/test/real/client028_session01_webcam_authenticate_adverse_1 -0.868785383462
+102 28 020/test/real/client028_session01_webcam_authenticate_adverse_2 -1.09559642336
+102 28 020/test/real/client028_session01_webcam_authenticate_controlled_1 -0.0821623759494
+102 28 020/test/real/client028_session01_webcam_authenticate_controlled_2 -0.326214325843
+102 31 020/test/real/client031_session01_webcam_authenticate_adverse_1 -0.306357510228
+102 31 020/test/real/client031_session01_webcam_authenticate_adverse_2 0.95548201038
+102 31 020/test/real/client031_session01_webcam_authenticate_controlled_1 0.466712315033
+102 31 020/test/real/client031_session01_webcam_authenticate_controlled_2 -0.292538329356
+102 102 020/test/real/client102_session01_webcam_authenticate_adverse_1 0.446356117353
+102 102 020/test/real/client102_session01_webcam_authenticate_adverse_2 -1.20810275147
+102 102 020/test/real/client102_session01_webcam_authenticate_controlled_1 0.324950532574
+102 102 020/test/real/client102_session01_webcam_authenticate_controlled_2 -0.970946290733
+102 104 020/test/real/client104_session01_webcam_authenticate_adverse_1 -0.848350671785
+102 104 020/test/real/client104_session01_webcam_authenticate_adverse_2 2.12044332624
+102 104 020/test/real/client104_session01_webcam_authenticate_controlled_1 -0.270659531779
+102 104 020/test/real/client104_session01_webcam_authenticate_controlled_2 -0.506972407718
+102 106 020/test/real/client106_session01_webcam_authenticate_adverse_1 0.328419369234
+102 106 020/test/real/client106_session01_webcam_authenticate_adverse_2 -0.666843607279
+102 106 020/test/real/client106_session01_webcam_authenticate_controlled_1 0.342625716031
+102 106 020/test/real/client106_session01_webcam_authenticate_controlled_2 0.35231071915
+102 107 020/test/real/client107_session01_webcam_authenticate_adverse_1 0.396905079095
+102 107 020/test/real/client107_session01_webcam_authenticate_adverse_2 0.388048831679
+102 107 020/test/real/client107_session01_webcam_authenticate_controlled_1 0.766359848964
+102 107 020/test/real/client107_session01_webcam_authenticate_controlled_2 0.289802404812
+102 109 020/test/real/client109_session01_webcam_authenticate_adverse_1 1.41433512263
+102 109 020/test/real/client109_session01_webcam_authenticate_adverse_2 -0.106432902113
+102 109 020/test/real/client109_session01_webcam_authenticate_controlled_1 0.253063020495
+102 109 020/test/real/client109_session01_webcam_authenticate_controlled_2 0.156208862686
+102 112 020/test/real/client112_session01_webcam_authenticate_adverse_1 0.330228379772
+102 112 020/test/real/client112_session01_webcam_authenticate_adverse_2 -1.48654358392
+102 112 020/test/real/client112_session01_webcam_authenticate_controlled_1 0.509723239414
+102 112 020/test/real/client112_session01_webcam_authenticate_controlled_2 -0.196155715729
+102 115 020/test/real/client115_session01_webcam_authenticate_adverse_1 -0.410922362909
+102 115 020/test/real/client115_session01_webcam_authenticate_adverse_2 0.892545450838
+102 115 020/test/real/client115_session01_webcam_authenticate_controlled_1 -1.1250711083
+102 115 020/test/real/client115_session01_webcam_authenticate_controlled_2 1.88414139325
+102 117 020/test/real/client117_session01_webcam_authenticate_adverse_1 -0.0201037455749
+102 117 020/test/real/client117_session01_webcam_authenticate_adverse_2 1.28794455761
+102 117 020/test/real/client117_session01_webcam_authenticate_controlled_1 -0.0778756699388
+102 117 020/test/real/client117_session01_webcam_authenticate_controlled_2 2.2792002273
diff --git a/bob/fusion/base/script/bob_fuse.py b/bob/fusion/base/script/bob_fuse.py
index f14dc75eb423965d264acb37f47c6d9d7f34af94..435ce6844211955946612c6cf4b9798d8f7db170 100755
--- a/bob/fusion/base/script/bob_fuse.py
+++ b/bob/fusion/base/script/bob_fuse.py
@@ -33,9 +33,6 @@ def fuse(args, command_line_parameters):
     score_lines_list_eval = [load_score(path, ncolumns=args.score_type)
                              for path in args.eval_files]
     scores_eval = get_all_scores(score_lines_list_eval)
-  else:
-    score_lines_list_eval = []
-    scores_eval = []
 
   # check if score lines are consistent
   if not args.skip_check:
@@ -54,7 +51,8 @@ def fuse(args, command_line_parameters):
 
   # preprocess data
   scores_dev = algorithm.preprocess(scores_dev)
-  scores_eval = algorithm.preprocess(scores_eval)
+  if args.eval_files:
+    scores_eval = algorithm.preprocess(scores_eval)
   neg, pos = algorithm.preprocess(neg), algorithm.preprocess(pos)
 
   # train the model
diff --git a/bob/fusion/base/script/plot_fusion_decision_boundary.py b/bob/fusion/base/script/plot_fusion_decision_boundary.py
index 9452d91510db54e489346d692800907e511e4a53..346d3c1e66cab46275813954853c9bbd0fe2470f 100644
--- a/bob/fusion/base/script/plot_fusion_decision_boundary.py
+++ b/bob/fusion/base/script/plot_fusion_decision_boundary.py
@@ -15,12 +15,8 @@ Options:
                           messages) to 1 (warnings), 2 (log messages), 3 (debug
                           information) by adding the --verbose option as often
                           as desired (e.g. '-vvv' for debug). [default: 0]
-  -a, --algorithm Algorithm  The fusion that was used during fusion if they
-                          implement a different load method e.g.
-                          bob.fusion.base.algorithm.MLP.
-                          [default: bob.fusion.base.algorithm.Algorithm]
   -g, --group N           If given scores will be grouped into N samples.
-                          [default: 500]
+                          Give -1 for no grouping. [default: -1]
   --grouping {random, kmeans}  The gouping algorithm used. [default: kmeans]
   -h --help               Show this screen.
   -V, --version           Show version.
@@ -110,6 +106,7 @@ def plot_boundary_decision(algorithm, scores, score_labels, threshold,
 
   plt.xlim([x_min, x_max])
   plt.ylim([y_min, y_max])
+  plt.grid('on')
 
   return contourf
 
@@ -117,11 +114,10 @@ def plot_boundary_decision(algorithm, scores, score_labels, threshold,
 def main(command_line_parameters=None):
   args = docopt(__doc__, argv=command_line_parameters,
                 version=bob.fusion.base.get_config())
-  print(args)
   bob.core.log.set_verbosity_level(logger, args['--verbose'])
 
   # load the algorithm
-  algorithm = eval('{}()'.format(args['--algorithm']))
+  algorithm = bob.fusion.base.algorithm.Algorithm()
   algorithm = algorithm.load(args['MODEL_FILE'])
 
   # load the scores
@@ -135,9 +131,13 @@ def main(command_line_parameters=None):
   score_labels = score_lines['claimed_id'] == score_lines['real_id']
 
   # plot the decision boundary
+  do_grouping = True
+  if int(args['--group']) == -1:
+    do_grouping = False
+
   plot_boundary_decision(
       algorithm, scores, score_labels, threshold,
-      do_grouping=True,
+      do_grouping=do_grouping,
       npoints=int(args['--group']),
       seed=0,
       gformat=args['--grouping']
diff --git a/bob/fusion/base/test/test_scripts.py b/bob/fusion/base/test/test_scripts.py
index 4265cc3e6c16c09774190fa55d609cd9fe0808e4..9bfe632cea8b505f27e91742c4b6c9460fe5d286 100644
--- a/bob/fusion/base/test/test_scripts.py
+++ b/bob/fusion/base/test/test_scripts.py
@@ -1 +1,59 @@
 #!/usr/bin/env python
+
+import os
+import shutil
+import tempfile
+
+from bob.fusion.base.script.bob_fuse import main as bob_fuse
+from bob.fusion.base.script.plot_fusion_decision_boundary import main as plot_fusion_decision_boundary
+from bob.io.base.test_utils import datafile
+
+dev_files = [datafile("scores-dev-1", 'bob.fusion.base'),
+             datafile("scores-dev-2", 'bob.fusion.base')]
+eval_files = [datafile("scores-eval-1", 'bob.fusion.base'),
+              datafile("scores-eval-2", 'bob.fusion.base')]
+
+
+def test_scripts():
+
+  tmpdir = tempfile.mkdtemp()
+  try:
+    fused_dev_file = os.path.join(tmpdir, 'scores-dev')
+    fused_eval_file = os.path.join(tmpdir, 'scores-eval')
+
+    # test normally
+    cmd = ['-i'] + dev_files + ['-o', fused_dev_file, '-a', 'llr']
+    bob_fuse(cmd)
+
+    cmd = ['-i'] + dev_files + ['-I'] + eval_files + ['-o', fused_dev_file, '-O', fused_eval_file, '-a', 'llr']
+    bob_fuse(cmd)
+
+    # make inconsistency
+    wrong_dev2 = os.path.join(tmpdir, 'scores-dev-2')
+    with open(wrong_dev2, 'w') as f1, open(dev_files[1]) as f2:
+      lines = f2.readlines()
+      temp = lines[0].split()
+      temp = (temp[0], 'temp1_id', temp[2], temp[3])
+      lines[0] = ' '.join(temp) + '\n'
+      f1.writelines(lines)
+
+    cmd = ['-i'] + dev_files[0:1] + [wrong_dev2] + ['-o', fused_dev_file, '-a', 'llr']
+    try:
+      bob_fuse(cmd)
+    except AssertionError:
+      pass
+    else:
+      raise Exception('An AssertionError should have been raised.')
+
+    # this should not raise an error
+    cmd = ['-i'] + dev_files[0:1] + [wrong_dev2] + ['-o', fused_dev_file, '-a', 'llr', '--skip-check']
+    bob_fuse(cmd)
+
+    # test plot
+    model_file = os.path.join(tmpdir, 'Model.pkl')
+    output = os.path.join(tmpdir, 'scatter.pdf')
+    cmd = dev_files + [model_file, '-o', output]
+    plot_fusion_decision_boundary(cmd)
+
+  finally:
+    shutil.rmtree(tmpdir)