diff --git a/bob/pad/face/database/__init__.py b/bob/pad/face/database/__init__.py
index d92ad1f20fcec224b01f0b32c837be73f8ac2253..2b0ed21089cd68001e158834673059e9e5569ed8 100644
--- a/bob/pad/face/database/__init__.py
+++ b/bob/pad/face/database/__init__.py
@@ -5,6 +5,7 @@ from .msu_mfsd import MsuMfsdPadDatabase
 from .aggregated_db import AggregatedDbPadDatabase
 from .mifs import MIFSPadDatabase
 from .maskattack import MaskAttackPadDatabase
+from .batl import BatlPadDatabase
 
 
 # gets sphinx autodoc done right - don't remove it
diff --git a/bob/pad/face/database/maskattack.py b/bob/pad/face/database/maskattack.py
index f6a54c98a86045e7f9fdf488249db110083523db..a4d8daf72faa908428ff902a4bc0ef452abf387e 100644
--- a/bob/pad/face/database/maskattack.py
+++ b/bob/pad/face/database/maskattack.py
@@ -74,7 +74,7 @@ class MaskAttackPadDatabase(PadDatabase):
 
     def __init__(
             self,
-            protocol=None,  # grandtest is the default protocol for this database
+            protocol=None,  
             original_directory=None,
             original_extension='.avi',
             **kwargs):
@@ -101,7 +101,7 @@ class MaskAttackPadDatabase(PadDatabase):
         # Since the high level API expects different group names than what the low
         # level API offers, you need to convert them when necessary
         self.low_level_group_names = (
-            'world', 'devel',
+            'world', 'dev',
             'test')  # group names in the low-level database interface
         self.high_level_group_names = (
             'train', 'dev',
@@ -164,7 +164,28 @@ class MaskAttackPadDatabase(PadDatabase):
             groups, self.low_level_group_names, self.high_level_group_names)
         # Since this database was designed for PAD experiments, nothing special
         # needs to be done here.
-        files = self.db.objects(groups=groups, **kwargs)
+
+        print("Objects method called with groups = {}, protocol = {}, purposes = {}, model_ids = {}".format(groups, protocol, purposes, model_ids))
+        #print("Kwargs -> {}".format(**kwargs))
+        #print("Translated groups = {}".frima)
+        
+        # for training
+
+        # for dev
+
+        # for eval
+        lowlevel_purposes = []
+        if purposes == 'real':
+          lowlevel_purposes = ['trainReal', 'probeReal', 'classifyReal']
+        else:
+          lowlevel_purposes = ['trainMask', 'probeMask', 'classifyMask']
+          
+        #if groups == ['world']:
+        #    lowlevel_purposes = ['trainMask']
+        #  if groups == ['world']:
+        #    lowlevel_purposes = ['trainMask']
+        #print(lowlevel_purposes)
+        files = self.db.objects(sets=groups, purposes=lowlevel_purposes, **kwargs)
 
         files = [MaskAttackPadFile(f) for f in files]
 
diff --git a/bob/pad/face/preprocessor/__init__.py b/bob/pad/face/preprocessor/__init__.py
index ced731f794d72bd6c5d85656516eb27926df345e..c23622e9b4a0c22cb80e33d5f9e5efa3283d1ef5 100644
--- a/bob/pad/face/preprocessor/__init__.py
+++ b/bob/pad/face/preprocessor/__init__.py
@@ -6,6 +6,7 @@ from .VideoSparseCoding import VideoSparseCoding
 from .Li import Li
 from .Chrom import Chrom
 from .SSR import SSR
+from .PPGSecure import PPGSecure
 
 def __appropriate__(*args):
     """Says object was actually declared here, and not in the import module.
diff --git a/setup.py b/setup.py
index eb007c7cf32bb7b19bc5af3ff88609be65e1176a..abd87e7f88ea99c94a8521e6a4f06b282f4f3e43 100644
--- a/setup.py
+++ b/setup.py
@@ -64,6 +64,7 @@ setup(
             'aggregated-db = bob.pad.face.config.database.aggregated_db:database',
             'mifs = bob.pad.face.config.database.mifs:database',
             'maskattack = bob.pad.face.config.database.maskattack:database',
+            'batl = bob.pad.face.config.database.batl:database',
         ],
 
         # registered configurations: