diff --git a/bob/bio/face/config/database/ijba.py b/bob/bio/face/config/database/ijba.py
new file mode 100644
index 0000000000000000000000000000000000000000..d726635c72877401e4c6b05333eb60e6abded8af
--- /dev/null
+++ b/bob/bio/face/config/database/ijba.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+
+from bob.bio.face.database import IJBABioDatabase
+
+ijba_directory = "[YOUR_IJBA_DIRECTORY]"
+
+database = IJBABioDatabase(
+  original_directory=ijba_directory,
+  protocol='search_split1'
+)
diff --git a/bob/bio/face/database/ijba.py b/bob/bio/face/database/ijba.py
index 01caa00cb7c23cbe9b8ac905c1b168ab5ee9ada7..909e3df49a80e24221d025bca98ef76ae0106559 100644
--- a/bob/bio/face/database/ijba.py
+++ b/bob/bio/face/database/ijba.py
@@ -4,54 +4,72 @@
 # Sat 20 Aug 15:43:10 CEST 2016
 
 """
-  IJBA database implementation of bob.bio.base.database.Database interface.
-  It is an extension of an SQL-based database interface, which directly talks to IJBA database, for
+  IJBA database implementation of bob.bio.base.database.BioDatabase interface.
+  It is an extension of the database interface, which directly talks to IJBA database, for
   verification experiments (good to use in bob.bio.base framework).
 """
 
 from .database import FaceBioFile
-from bob.bio.base.database import BioDatabase
+from bob.bio.base.database import BioDatabase, BioFileSet
+import os
 
 
 class IJBABioFile(FaceBioFile):
+  def __init__(self, f):
+    super(IJBABioFile, self).__init__(client_id=f.client_id, path=f.path, file_id=f.id)
+    self.f = f
 
-    def __init__(self, f):
-        super(IJBABioFile, self).__init__(client_id=f.client_id, path=f.path, file_id=f.id)
-        self._f = f
+  def make_path(self, directory, extension):
+    # add file ID to the path, so that a unique path is generated (there might be several identities in each physical file)
+    return str(os.path.join(directory or '', self.path + "-" + str(self.id) + (extension or '')))
+
+
+class IJBABioFileSet(BioFileSet):
+  def __init__(self, template):
+    super(IJBABioFileSet, self).__init__(file_set_id = template.id, files = [IJBABioFile(f) for f in template.files], path = template.path)
 
 
 class IJBABioDatabase(BioDatabase):
-    """
+  """
     IJBA database implementation of :py:class:`bob.bio.base.database.BioDatabase` interface.
     It is an extension of an SQL-based database interface, which directly talks to IJBA database, for
     verification experiments (good to use in bob.bio.base framework).
-    """
+  """
 
-    def __init__(
-            self,
+  def __init__(
+      self,
             original_directory=None,
             annotations_directory=None,
             original_extension=None,
-            **kwargs
-    ):
-        # call base class constructors to open a session to the database
-        super(IJBABioDatabase, self).__init__(
+      **kwargs
+  ):
+    # call base class constructors to open a session to the database
+    super(IJBABioDatabase, self).__init__(
+            models_depend_on_protocol=True,
+            training_depends_on_protocol=True,
             name='ijba',
             original_directory=original_directory,
             annotations_directory=annotations_directory,
             original_extension=original_extension,
             **kwargs)
 
-        from bob.db.ijba.query import Database as LowLevelDatabase
-        self._db = LowLevelDatabase(original_directory, annotations_directory,
-                                    original_extension)
+    from bob.db.ijba.query import Database as LowLevelDatabase
+    self._db = LowLevelDatabase(original_directory, annotations_directory, original_extension)
+
+  def uses_probe_file_sets(self):
+    return True
+
+  def model_ids_with_protocol(self, groups=None, protocol="search_split1", **kwargs):
+    return self._db.model_ids(groups=groups, protocol=protocol)
+
+  def objects(self, groups=None, protocol="search_split1", purposes=None, model_ids=None, **kwargs):
+    return [IJBABioFile(f) for f in self._db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)]
 
-    def model_ids_with_protocol(self, groups=None, protocol="search_split1", **kwargs):
-        return self._db.model_ids(groups=groups, protocol=protocol)
+  def object_sets(self, groups=None, protocol="search_split1", purposes=None, model_ids=None):
+    return [IJBABioFileSet(t) for t in self._db.object_sets(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids)]
 
-    def objects(self, groups=None, protocol="search_split1", purposes=None, model_ids=None, **kwargs):
-        retval = self._db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
-        return [IJBABioFile(f) for f in retval]
+  def annotations(self, biofile):
+    return self._db.annotations(biofile.f)
 
-    def annotations(self, myfile):
-        return self._db.annotations(myfile._f)
+  def client_id_from_model_id(self, model_id, group='dev'):
+    return self._db.get_client_id_from_model_id(model_id)
diff --git a/bob/bio/face/test/test_databases.py b/bob/bio/face/test/test_databases.py
index 8f90148e13b287bc6aa073734b1febb6df8beea8..3cc7b91ead9d6263e7b081711541a304f945369d 100644
--- a/bob/bio/face/test/test_databases.py
+++ b/bob/bio/face/test/test_databases.py
@@ -165,12 +165,12 @@ def test_ijba():
     database = bob.bio.base.load_resource(
         'ijba', 'database', preferred_package='bob.bio.face')
     try:
-        check_database(database)
+        check_database(database,models_depend=True, training_depends=True)
     except IOError as e:
         raise SkipTest(
             "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e)
     try:
-        _check_annotations(database, limit_files=1000)
+        _check_annotations(database, topleft=True, limit_files=1000)
     except IOError as e:
         raise SkipTest(
             "The annotations could not be queried; probably the annotation files are missing. Here is the error: '%s'" % e)
diff --git a/setup.py b/setup.py
index e55963a87f982d6d2051496c274190bcb0060452..efa163beab83bc71120d469b61c47c366bcfdfcc 100644
--- a/setup.py
+++ b/setup.py
@@ -114,6 +114,7 @@ setup(
             'caspeal           = bob.bio.face.config.database.caspeal:database',
             'frgc              = bob.bio.face.config.database.frgc:database',
             'gbu               = bob.bio.face.config.database.gbu:database',
+            'ijba              = bob.bio.face.config.database.ijba:database',
             'lfw-restricted    = bob.bio.face.config.database.lfw_restricted:database',
             'lfw-unrestricted  = bob.bio.face.config.database.lfw_unrestricted:database',
             'mobio-image       = bob.bio.face.config.database.mobio:mobio_image',