diff --git a/bob/bio/face/config/database/arface.py b/bob/bio/face/config/database/arface.py
index c378304070cd810f86e9fd0fbc84f469589281a7..3bae0e883b83dba6ed338e42064368b431a8933c 100644
--- a/bob/bio/face/config/database/arface.py
+++ b/bob/bio/face/config/database/arface.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import ARFaceBioDatabase
+from bob.bio.face.database import ARFaceBioDatabase
 
 arface_directory = "[YOUR_ARFACE_DIRECTORY]"
 
diff --git a/bob/bio/face/config/database/atnt.py b/bob/bio/face/config/database/atnt.py
new file mode 100644
index 0000000000000000000000000000000000000000..82e9c5e8a40d616089b853d8b971da7a7638a240
--- /dev/null
+++ b/bob/bio/face/config/database/atnt.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+
+from bob.bio.face.database import AtntBioDatabase
+
+atnt_directory = "[YOUR_ATNT_DIRECTORY]"
+
+database = AtntBioDatabase(
+    original_directory=atnt_directory,
+    original_extension=".pgm",
+)
diff --git a/bob/bio/face/config/database/banca_english.py b/bob/bio/face/config/database/banca_english.py
index 76c765db0369ded5679a4a3f15db8fb7d29dadb0..53fbc36a175ca7d816c0d5367b00462e85cf7ee8 100644
--- a/bob/bio/face/config/database/banca_english.py
+++ b/bob/bio/face/config/database/banca_english.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import BancaBioDatabase
+from bob.bio.face.database import BancaBioDatabase
 
 banca_directory = "[YOUR_BANCA_DIRECTORY]"
 
diff --git a/bob/bio/face/config/database/caspeal.py b/bob/bio/face/config/database/caspeal.py
index d92dbf50df517251ff366e7f28c545d7951d9644..f4fd257a6693f2b0e7afb7fca92c3351de4d3526 100644
--- a/bob/bio/face/config/database/caspeal.py
+++ b/bob/bio/face/config/database/caspeal.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import CaspealBioDatabase
+from bob.bio.face.database import CaspealBioDatabase
 
 caspeal_directory = "[YOUR_CAS-PEAL_DIRECTORY]"
 
diff --git a/bob/bio/face/config/database/frgc.py b/bob/bio/face/config/database/frgc.py
index 304fcb3985f1012fe6839f4abe076c10968c5693..f351cea4a3ae6eafbb0a3f5c69ba00ea1212bc8b 100644
--- a/bob/bio/face/config/database/frgc.py
+++ b/bob/bio/face/config/database/frgc.py
@@ -1,13 +1,11 @@
 #!/usr/bin/env python
 
-import bob.db.frgc
-import bob.bio.base
+from bob.bio.face.database import FRGCBioDatabase
 
 frgc_directory = "[YOUR_FRGC_DIRECTORY]"
 
-database = bob.bio.base.database.DatabaseBob(
-    database = bob.db.frgc.Database(frgc_directory),
-    name = "frgc",
-    protocol = '2.0.1',
-    models_depend_on_protocol = True
+database = FRGCBioDatabase(
+    original_directory=frgc_directory,
+    protocol='2.0.1',
+    models_depend_on_protocol=True
 )
diff --git a/bob/bio/face/config/database/gbu.py b/bob/bio/face/config/database/gbu.py
index 6da69eb940628af703271d0fb08f6028f9e682bf..c74b3b3ce8b048890de5ee2d4f66c3c8d7c6bb7d 100644
--- a/bob/bio/face/config/database/gbu.py
+++ b/bob/bio/face/config/database/gbu.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import GBUBioDatabase
+from bob.bio.face.database import GBUBioDatabase
 
 mbgc_v1_directory = "[YOUR_MBGC-V1_DIRECTORY]"
 
diff --git a/bob/bio/face/config/database/lfw_restricted.py b/bob/bio/face/config/database/lfw_restricted.py
index 1844f9f697c36e97ec00dc4407e50073f1701186..373aac0c03e3b2a654bb30880a6b21f26bc11e1a 100644
--- a/bob/bio/face/config/database/lfw_restricted.py
+++ b/bob/bio/face/config/database/lfw_restricted.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import LFWBioDatabase
+from bob.bio.face.database import LFWBioDatabase
 
 lfw_directory = "[YOUR_LFW_FUNNELED_DIRECTORY]"
 
diff --git a/bob/bio/face/config/database/lfw_unrestricted.py b/bob/bio/face/config/database/lfw_unrestricted.py
index b05a354ac71ba06fb6c4babcb23fef1f7e16c1bc..db4ecb9e1cb91242ee548c1fc21a647c6a48869a 100644
--- a/bob/bio/face/config/database/lfw_unrestricted.py
+++ b/bob/bio/face/config/database/lfw_unrestricted.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import LFWBioDatabase
+from bob.bio.face.database import LFWBioDatabase
 
 lfw_directory = "[YOUR_LFW_FUNNELED_DIRECTORY]"
 
diff --git a/bob/bio/face/config/database/mobio_female.py b/bob/bio/face/config/database/mobio_female.py
index 73508e5c0a691a50fa24f2ac24c473a65adced72..a329d9224502429d26ae985df052f0fec95eb131 100644
--- a/bob/bio/face/config/database/mobio_female.py
+++ b/bob/bio/face/config/database/mobio_female.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import MobioBioDatabase
+from bob.bio.face.database import MobioBioDatabase
 
 mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]"
 mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]"
@@ -9,6 +9,7 @@ database = MobioBioDatabase(
     original_directory=mobio_image_directory,
     original_extension=".png",
     annotation_directory=mobio_annotation_directory,
+    annotation_type="eyecenter",
 
     protocol = 'female',
     models_depend_on_protocol=True,
diff --git a/bob/bio/face/config/database/mobio_image.py b/bob/bio/face/config/database/mobio_image.py
index 59c3565155e184791f82acbd3a72c36d54bd16ea..b754e6f727190001126ecf58434ffef13bbe7c1f 100644
--- a/bob/bio/face/config/database/mobio_image.py
+++ b/bob/bio/face/config/database/mobio_image.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import MobioBioDatabase
+from bob.bio.face.database import MobioBioDatabase
 
 mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]"
 mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]"
@@ -9,6 +9,7 @@ database = MobioBioDatabase(
     original_directory=mobio_image_directory,
     original_extension=".png",
     annotation_directory=mobio_annotation_directory,
+    annotation_type="eyecenter",
 
     protocol='male',
     models_depend_on_protocol = True,
diff --git a/bob/bio/face/config/database/mobio_male.py b/bob/bio/face/config/database/mobio_male.py
index 214fea4560d6534be3b755355aa73f7c7461858f..90da21e23b1580aa000870b830a61dbd5e54a3b2 100644
--- a/bob/bio/face/config/database/mobio_male.py
+++ b/bob/bio/face/config/database/mobio_male.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import MobioBioDatabase
+from bob.bio.face.database import MobioBioDatabase
 
 mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]"
 mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]"
@@ -9,6 +9,7 @@ database = MobioBioDatabase(
     original_directory=mobio_image_directory,
     original_extension=".png",
     annotation_directory=mobio_annotation_directory,
+    annotation_type="eyecenter",
 
     protocol='male',
     models_depend_on_protocol = True,
diff --git a/bob/bio/face/config/database/multipie.py b/bob/bio/face/config/database/multipie.py
index 9324389bc4fa645068d1f08d2f04d947ee077cf4..405c60aa9943d826f65db88c2190a7a3c8b42095 100644
--- a/bob/bio/face/config/database/multipie.py
+++ b/bob/bio/face/config/database/multipie.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import MultipieBioDatabase
+from bob.bio.face.database import MultipieBioDatabase
 
 multipie_image_directory = "[YOUR_MULTI-PIE_IMAGE_DIRECTORY]"
 multipie_annotation_directory = "[YOUR_MULTI-PIE_ANNOTATION_DIRECTORY]"
diff --git a/bob/bio/face/config/database/multipie_pose.py b/bob/bio/face/config/database/multipie_pose.py
index a67930ffd3913a094ca3c1c9e013178cf6c1741b..3260f0e08797eaf8dbd3e833f82d2c2dbe5d9708 100644
--- a/bob/bio/face/config/database/multipie_pose.py
+++ b/bob/bio/face/config/database/multipie_pose.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 
-from bob.bio.db import MultipieBioDatabase
+from bob.bio.face.database import MultipieBioDatabase
 
 # here, we only want to have the cameras that are used in the P protocol
 cameras = ('24_0', '01_0', '20_0', '19_0', '04_1', '05_0', '05_1', '14_0', '13_0', '08_0', '09_0', '12_0', '11_0')
diff --git a/bob/bio/face/config/database/scface.py b/bob/bio/face/config/database/scface.py
index 9f4e339d8794e3d1d172f2577b190a61e00d796a..6fd8e7ea42bf71c7f46857362b6333490ca88fb9 100644
--- a/bob/bio/face/config/database/scface.py
+++ b/bob/bio/face/config/database/scface.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import SCFaceBioDatabase
+from bob.bio.face.database import SCFaceBioDatabase
 
 scface_directory = "[YOUR_SC_FACE_DIRECTORY]"
 
diff --git a/bob/bio/face/config/database/xm2vts.py b/bob/bio/face/config/database/xm2vts.py
index 54a3533d64d6f9fc81a042e2d82d341c1b831a6f..e9cb98a0cbe1bea01d0e64651249f4055a6d9e33 100644
--- a/bob/bio/face/config/database/xm2vts.py
+++ b/bob/bio/face/config/database/xm2vts.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from bob.bio.db import XM2VTSBioDatabase
+from bob.bio.face.database import XM2VTSBioDatabase
 
 xm2vts_directory = "[YOUR_XM2VTS_DIRECTORY]"
 
diff --git a/bob/bio/face/database/__init__.py b/bob/bio/face/database/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b1e187e27ec4e7c6a221098becd98915e9f0fc4
--- /dev/null
+++ b/bob/bio/face/database/__init__.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+
+from .database import FaceBioFile
+from .mobio import MobioBioDatabase
+from .replay import ReplayBioDatabase
+from .atnt import AtntBioDatabase
+from .banca import BancaBioDatabase
+from .gbu import GBUBioDatabase
+from .arface import ARFaceBioDatabase
+from .caspeal import CaspealBioDatabase
+from .lfw import LFWBioDatabase
+from .multipie import MultipieBioDatabase
+from .ijba import IJBABioDatabase
+from .xm2vts import XM2VTSBioDatabase
+from .frgc import FRGCBioDatabase
+from .cuhk_cufs import CUHK_CUFSBioDatabase
+from .scface import SCFaceBioDatabase
+
+# gets sphinx autodoc done right - don't remove it
+__all__ = [_ for _ in dir() if not _.startswith('_')]
diff --git a/bob/bio/face/database/arface.py b/bob/bio/face/database/arface.py
new file mode 100644
index 0000000000000000000000000000000000000000..262dc90cfb955d6d3b12c84af08101769da3d098
--- /dev/null
+++ b/bob/bio/face/database/arface.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  ARFACE database implementation of bob.bio.base.database.ZTDatabase interface.
+  It is an extension of an SQL-based database interface, which directly talks to ARFACE database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class ARFaceBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying ARFACE database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(ARFaceBioDatabase, self).__init__(name='arface', **kwargs)
+
+        from bob.db.arface.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/atnt.py b/bob/bio/face/database/atnt.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b93e0e0394162b02b8455d3273cd926ded39575
--- /dev/null
+++ b/bob/bio/face/database/atnt.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Amir Mohammadi <amir.mohammadi@idiap.ch>
+# Wed 13 Jul 16:43:22 CEST 2016
+
+"""
+  Atnt database implementation of bob.bio.base.database.Database interface.
+  It is an extension of an SQL-based database interface, which directly talks to Atnt database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class AtntBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying Atnt database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(AtntBioDatabase, self).__init__(name='atnt', **kwargs)
+
+        from bob.db.atnt.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/banca.py b/bob/bio/face/database/banca.py
new file mode 100644
index 0000000000000000000000000000000000000000..6da0b31202148674cc9eae9becd636494e7d9e9a
--- /dev/null
+++ b/bob/bio/face/database/banca.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  BANCA database implementation of bob.bio.base.database.ZTDatabase interface.
+  It is an extension of an SQL-based database interface, which directly talks to Banca database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import ZTBioDatabase, BioFile
+
+
+class BancaBioDatabase(ZTBioDatabase):
+    """
+    Implements verification API for querying Banca database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(BancaBioDatabase, self).__init__(name='banca', **kwargs)
+
+        from bob.db.banca.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs):
+        return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs):
+        retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def zobjects(self, groups=None, protocol=None, **kwargs):
+        retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/caspeal.py b/bob/bio/face/database/caspeal.py
new file mode 100644
index 0000000000000000000000000000000000000000..620c02ef96851cf3b498734ba51708c20384c85e
--- /dev/null
+++ b/bob/bio/face/database/caspeal.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  CASPEAL database implementation of bob.bio.base.database.Database interface.
+  It is an extension of an SQL-based database interface, which directly talks to CASPEAL database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class CaspealBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying Caspeal database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(CaspealBioDatabase, self).__init__(name='caspeal', **kwargs)
+
+        from bob.db.caspeal.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/cuhk_cufs.py b/bob/bio/face/database/cuhk_cufs.py
new file mode 100644
index 0000000000000000000000000000000000000000..62ed153dd4c234455c1ddd8f3980fc1cc6849611
--- /dev/null
+++ b/bob/bio/face/database/cuhk_cufs.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  CUHK_CUFS database implementation of bob.bio.base.database.ZTDatabase interface.
+  It is an extension of an SQL-based database interface, which directly talks to CUHK_CUFS database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import ZTBioDatabase, BioFile
+
+
+class CUHK_CUFSBioDatabase(ZTBioDatabase):
+    """
+    Implements verification API for querying CUHK_CUFS database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(CUHK_CUFSBioDatabase, self).__init__(name='cuhk_cufs', **kwargs)
+
+        from bob.db.cuhk_cufs.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol="search_split1_p2s", **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def tmodel_ids_with_protocol(self, protocol="search_split1_p2s", groups=None, **kwargs):
+        return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs)
+
+    def objects(self, groups=None, protocol="search_split1_p2s", purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def tobjects(self, groups=None, protocol="search_split1_p2s", model_ids=None, **kwargs):
+        retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def zobjects(self, groups=None, protocol="search_split1_p2s", **kwargs):
+        retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/database.py b/bob/bio/face/database/database.py
new file mode 100644
index 0000000000000000000000000000000000000000..7cbc8f305c8561a619a801f6e9d3d2c604717926
--- /dev/null
+++ b/bob/bio/face/database/database.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Wed 20 July 14:43:22 CEST 2016
+
+"""
+  Verification API for bob.db.voxforge
+"""
+
+from bob.bio.base.database.file import BioFile
+
+
+class FaceBioFile(BioFile):
+    def __init__(self, client_id, path, file_id):
+        """
+        Initializes this File object with an File equivalent for
+        VoxForge database.
+        """
+        super(FaceBioFile, self).__init__(client_id=client_id, path=path, file_id=file_id)
diff --git a/bob/bio/face/database/frgc.py b/bob/bio/face/database/frgc.py
new file mode 100644
index 0000000000000000000000000000000000000000..b6d8ac7a0ab2fcaf0afc97db07627f624754356b
--- /dev/null
+++ b/bob/bio/face/database/frgc.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  FRGC database implementation of bob.bio.base.database.Database interface.
+  It is an extension of an SQL-based database interface, which directly talks to FRGC database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class FRGCBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying FRGC database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(FRGCBioDatabase, self).__init__(name='frgc', **kwargs)
+
+        from bob.db.frgc.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/gbu.py b/bob/bio/face/database/gbu.py
new file mode 100644
index 0000000000000000000000000000000000000000..a402ba6c0034e78f62263f2bb9217e2fce6f018c
--- /dev/null
+++ b/bob/bio/face/database/gbu.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  GBU database implementation of bob.bio.base.database.ZTDatabase interface.
+  It is an extension of an SQL-based database interface, which directly talks to GBU database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class GBUBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying gbu database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(GBUBioDatabase, self).__init__(name='GBU', **kwargs)
+
+        from bob.db.gbu.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/ijba.py b/bob/bio/face/database/ijba.py
new file mode 100644
index 0000000000000000000000000000000000000000..711b11f339b1a0bf21647bea0a751730a7b19cb1
--- /dev/null
+++ b/bob/bio/face/database/ijba.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# 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
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class IJBABioDatabase(BioDatabase):
+    """
+    Implements verification API for querying IJBA database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(IJBABioDatabase, self).__init__(name='ijba', **kwargs)
+
+        from bob.db.ijba.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    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):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/lfw.py b/bob/bio/face/database/lfw.py
new file mode 100644
index 0000000000000000000000000000000000000000..0a22d09c15b81c9dc68046a1e96f0428e657e6ae
--- /dev/null
+++ b/bob/bio/face/database/lfw.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  LFW database implementation of bob.bio.base.database.Database interface.
+  It is an extension of an SQL-based database interface, which directly talks to LFW database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class LFWBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying LFW database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(LFWBioDatabase, self).__init__(name='lfw', **kwargs)
+
+        from bob.db.lfw.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/mobio.py b/bob/bio/face/database/mobio.py
new file mode 100644
index 0000000000000000000000000000000000000000..94c797475f4b815f96e3ef9b61359e488d53064d
--- /dev/null
+++ b/bob/bio/face/database/mobio.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Amir Mohammadi <amir.mohammadi@idiap.ch>
+# Wed 13 Jul 16:43:22 CEST 2016
+
+"""
+  MOBIO database implementation of bob.bio.base.database.ZTDatabase interface.
+  It is an extension of an SQL-based database interface, which directly talks to Mobio database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+
+from .database import FaceBioFile
+from bob.bio.base.database import ZTBioDatabase, BioFile
+
+
+class MobioBioDatabase(ZTBioDatabase):
+    """
+    Implements verification API for querying Mobio database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(MobioBioDatabase, self).__init__(name='mobio',
+                                               **kwargs)
+
+        from bob.db.mobio.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, gender=None):
+        return self.__db.model_ids(groups=groups, protocol=protocol, gender=gender)
+
+    def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs):
+        return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs):
+        retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def zobjects(self, groups=None, protocol=None, **kwargs):
+        retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/multipie.py b/bob/bio/face/database/multipie.py
new file mode 100644
index 0000000000000000000000000000000000000000..f6bc0b1018dca177164de5655f519d07e6fcb9b0
--- /dev/null
+++ b/bob/bio/face/database/multipie.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  Multipie database implementation of bob.bio.base.database.Database interface.
+  It is an extension of an SQL-based database interface, which directly talks to Multipie database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import ZTBioDatabase, BioFile
+
+
+class MultipieBioDatabase(ZTBioDatabase):
+    """
+    Implements verification API for querying MULTIPIE database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(MultipieBioDatabase, self).__init__(name='multipie', **kwargs)
+
+        from bob.db.multipie.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [BioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs):
+        return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs)
+
+    def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs):
+        retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def zobjects(self, groups=None, protocol=None, **kwargs):
+        retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
diff --git a/bob/bio/face/database/replay.py b/bob/bio/face/database/replay.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a98d01959dcb949a3329b6bfc2a17da59b4e27f
--- /dev/null
+++ b/bob/bio/face/database/replay.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Pavel Korshunov <pavel.korshunov@idiap.ch>
+# Mon 12 Oct 14:43:22 CEST 2015
+
+"""
+  Replay attack database implementation of bob.bio.base.database.BioDatabase interface.
+  It is an extension of an SQL-based database interface, which directly talks to Replay database, for
+  verification experiments (good to use in bob.bio.base framework).
+  It also implements a kind of hack so that you can run vulnerability analysis with it.
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class ReplayBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying Replay database.
+    """
+    __doc__ = __doc__
+
+    def __init__(self, **kwargs):
+        # call base class constructors to open a session to the database
+        super(ReplayBioDatabase, self).__init__(name='replay', **kwargs)
+
+        from bob.db.replay import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+        self.low_level_group_names = ('train', 'devel', 'test')
+        self.high_level_group_names = ('world', 'dev', 'eval')
+
+    def protocol_names(self):
+        """Returns all registered protocol names
+        Here I am going to hack and double the number of protocols
+        with -licit and -spoof. This is done for running vulnerability
+        analysis"""
+        names = [p.name + '-licit' for p in self.__db.protocols()]
+        names += [p.name + '-spoof' for p in self.__db.protocols()]
+        return names
+
+    def groups(self):
+        return self.convert_names_to_highlevel(
+            self.__db.groups(), self.low_level_group_names, self.high_level_group_names)
+
+    def annotations(self, file):
+        """Will return the bounding box annotation of all frames of the video."""
+        # fn = 10  # 10th frame number
+        annots = file.bbx(directory=self.original_directory)
+        # bob uses the (y, x) format
+        annotations = dict()
+        for i in range(annots.shape[0]):
+            topleft = (annots[i][2], annots[i][1])
+            bottomright = (annots[i][2] + annots[i][4], annots[i][1] + annots[i][3])
+            annotations[str(i)] = {'topleft': topleft, 'bottomright': bottomright}
+        return annotations
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        # since the low-level API does not support verification straight-forward-ly, we improvise.
+        files = self.objects(groups=groups, protocol=protocol)
+        return sorted(set(f.client_id for f in files))
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        if protocol == '.':
+            protocol = None
+        protocol = self.check_parameter_for_validity(protocol, "protocol", self.protocol_names(), 'grandtest-licit')
+        groups = self.check_parameters_for_validity(groups, "group", self.groups(), self.groups())
+        purposes = self.check_parameters_for_validity(purposes, "purpose", ('enroll', 'probe'), ('enroll', 'probe'))
+        purposes = list(purposes)
+        groups = self.convert_names_to_lowlevel(
+            groups, self.low_level_group_names, self.high_level_group_names)
+
+        # protocol licit is not defined in the low level API
+        # so do a hack here.
+        if '-licit' in protocol:
+            # for licit we return the grandtest protocol
+            protocol = protocol.replace('-licit', '')
+            # The low-level API has only "attack", "real", "enroll" and "probe"
+            # should translate to "real" or "attack" depending on the protocol.
+            # enroll does not to change.
+            if 'probe' in purposes:
+                purposes.remove('probe')
+                purposes.append('real')
+                if len(purposes) == 1:
+                    # making the model_ids to None will return all clients which make
+                    # the impostor data also available.
+                    model_ids = None
+                elif model_ids:
+                    raise NotImplementedError(
+                       'Currently returning both enroll and probe for specific '
+                       'client(s) in the licit protocol is not supported. '
+                       'Please specify one purpose only.')
+        elif '-spoof' in protocol:
+            protocol = protocol.replace('-spoof', '')
+            # you need to replace probe with attack and real for the spoof protocols.
+            # I am adding the real here also to create positives scores also.
+            if 'probe' in purposes:
+                purposes.remove('probe')
+                purposes.append('attack')
+
+        # now, query the actual Replay database
+        objects = self.__db.objects(groups=groups, protocol=protocol, cls=purposes, clients=model_ids, **kwargs)
+
+        # make sure to return BioFile representation of a file, not the database one
+        # also make sure you replace client ids with spoof/metatdata1/metadata2/...
+        retval = []
+        for f in objects:
+            if f.is_real():
+                retval.append(FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id))
+            else:
+                temp = FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id)
+                temp.client_id = 'attack'
+                retval.append(temp)
+        return retval
diff --git a/bob/bio/face/database/scface.py b/bob/bio/face/database/scface.py
new file mode 100644
index 0000000000000000000000000000000000000000..a13d092b41239bbf337ab15f7da1ed13ba2ba8bb
--- /dev/null
+++ b/bob/bio/face/database/scface.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  SCFace database implementation of bob.bio.base.database.ZTDatabase interface.
+  It is an extension of an SQL-based database interface, which directly talks to SCFace database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import ZTBioDatabase, BioFile
+
+
+class SCFaceBioDatabase(ZTBioDatabase):
+    """
+    Implements verification API for querying SCFace database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(SCFaceBioDatabase, self).__init__(name='scface', **kwargs)
+
+        from bob.db.scface.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs):
+        return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs):
+        retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
+
+    def zobjects(self, groups=None, protocol=None, **kwargs):
+        retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/database/xm2vts.py b/bob/bio/face/database/xm2vts.py
new file mode 100644
index 0000000000000000000000000000000000000000..a6f94ceaeaf914373a5358f1491d494292194ba1
--- /dev/null
+++ b/bob/bio/face/database/xm2vts.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+# Sat 20 Aug 15:43:10 CEST 2016
+
+"""
+  XM2VTS database implementation of bob.bio.base.database.Database interface.
+  It is an extension of an SQL-based database interface, which directly talks to XM2VTS database, for
+  verification experiments (good to use in bob.bio.base framework).
+"""
+
+from .database import FaceBioFile
+from bob.bio.base.database import BioDatabase, BioFile
+
+
+class XM2VTSBioDatabase(BioDatabase):
+    """
+    Implements verification API for querying XM2VTS database.
+    """
+
+    def __init__(
+            self,
+            **kwargs
+    ):
+        # call base class constructors to open a session to the database
+        super(XM2VTSBioDatabase, self).__init__(name='xm2vts', **kwargs)
+
+        from bob.db.xm2vts.query import Database as LowLevelDatabase
+        self.__db = LowLevelDatabase()
+
+    def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
+        return self.__db.model_ids(groups=groups, protocol=protocol)
+
+    def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs):
+        retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs)
+        return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval]
diff --git a/bob/bio/face/script/display_face_annotations.py b/bob/bio/face/script/display_face_annotations.py
index b0202f6311b7b48161d4636a4b86a9d0aa030491..6421c02042c603e3f67371ac45fd4031a34b7ec9 100644
--- a/bob/bio/face/script/display_face_annotations.py
+++ b/bob/bio/face/script/display_face_annotations.py
@@ -55,7 +55,7 @@ def main(command_line_parameters=None):
   # load database
   database = bob.bio.base.load_resource("".join(args.database), "database")
   # replace directories
-  if isinstance(database, bob.bio.db.BioDatabase):
+  if isinstance(database, bob.bio.base.database.BioDatabase):
     database.replace_directories(args.database_directories_file)
 
   # get all files
diff --git a/bob/bio/face/test/test_databases.py b/bob/bio/face/test/test_databases.py
index faa2fc4419b6564e3c4b09fd32dec0d61576babb..d6dacb9fdead745054095d455b39e01dc132dece 100644
--- a/bob/bio/face/test/test_databases.py
+++ b/bob/bio/face/test/test_databases.py
@@ -26,7 +26,7 @@ from bob.bio.base.test.utils import db_available
 
 
 def _check_database(database, groups=('dev',), protocol=None, training_depends=False, models_depend=False):
-    assert isinstance(database, bob.bio.db.BioDatabase)
+    assert isinstance(database, bob.bio.base.database.BioDatabase)
 
     # load the directories
     if 'HOME' in os.environ:
@@ -40,7 +40,7 @@ def _check_database(database, groups=('dev',), protocol=None, training_depends=F
     assert len(database.arrange_by_client(database.training_files('train_enroller'))) > 0
 
     for group in groups:
-        model_ids = database.model_ids(group, protocol=protocol)
+        model_ids = database.model_ids_with_protocol(group, protocol=protocol)
         assert len(model_ids) > 0
         assert database.client_id_from_model_id(model_ids[0]) is not None
         assert len(database.enroll_files(model_ids[0], group)) > 0
@@ -52,7 +52,7 @@ def _check_database(database, groups=('dev',), protocol=None, training_depends=F
 
 def _check_database_zt(database, groups=('dev', 'eval'), protocol=None, training_depends=False, models_depend=False):
     _check_database(database, groups, protocol, training_depends, models_depend)
-    assert isinstance(database, bob.bio.db.ZTBioDatabase)
+    assert isinstance(database, bob.bio.base.database.ZTBioDatabase)
     for group in groups:
         t_model_ids = database.t_model_ids(group)
         assert len(t_model_ids) > 0
@@ -160,7 +160,7 @@ def test_mobio():
 
     try:
         _check_annotations(database)
-    except IOError as e:
+    except Exception as e:
         raise SkipTest(
             "The annotations could not be queried; probably the annotation files are missing. Here is the error: '%s'" % e)
 
@@ -181,7 +181,7 @@ def test_multipie():
 
     try:
         _check_annotations(database)
-    except IOError as e:
+    except Exception 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/buildout-dev.cfg b/buildout-dev.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a43a4e9c68fed2081a97ff2b84c026f6d5692f8c
--- /dev/null
+++ b/buildout-dev.cfg
@@ -0,0 +1,80 @@
+; vim: set fileencoding=utf-8 :
+; Manuel Guenther <manuel.guenther@idiap.ch>
+; Thu Oct  9 16:51:06 CEST 2014
+
+[buildout]
+parts = scripts
+eggs = bob.bio.face
+       bob.db.base
+       bob.db.arface
+       bob.db.banca
+       bob.db.caspeal
+       bob.db.frgc
+       bob.db.gbu
+       bob.db.lfw
+       bob.db.mobio
+       bob.db.multipie
+       bob.db.scface
+       bob.db.xm2vts
+       gridtk
+
+extensions = bob.buildout
+             mr.developer
+auto-checkout = *
+develop = src/bob.extension
+          src/bob.db.base
+          src/bob.db.atnt
+          src/bob.bio.base
+          src/bob.db.arface
+          src/bob.db.banca
+          src/bob.db.caspeal
+          src/bob.db.frgc
+          src/bob.db.gbu
+          src/bob.db.lfw
+          src/bob.db.mobio
+          src/bob.db.multipie
+          src/bob.db.scface
+          src/bob.db.xm2vts
+          .
+
+; options for bob.buildout
+debug = true
+verbose = true
+newest = false
+
+[sources]
+bob.extension = git https://gitlab.idiap.ch/bob/bob.extension
+;bob.blitz = git https://gitlab.idiap.ch/bob/bob.blitz
+;bob.core = git https://gitlab.idiap.ch/bob/bob.core
+;bob.io.base = git https://gitlab.idiap.ch/bob/bob.io.base
+;bob.io.image = git https://gitlab.idiap.ch/bob/bob.io.image
+;bob.learn.activation = git https://gitlab.idiap.ch/bob/bob.learn.activation
+;bob.math = git https://gitlab.idiap.ch/bob/bob.math
+;bob.sp = git https://gitlab.idiap.ch/bob/bob.sp
+;bob.ip.base = git https://gitlab.idiap.ch/bob/bob.ip.base
+;bob.ip.color = git https://gitlab.idiap.ch/bob/bob.ip.color
+;bob.ip.draw = git https://gitlab.idiap.ch/bob/bob.ip.draw
+;bob.ip.gabor = git https://gitlab.idiap.ch/bob/bob.ip.gabor
+;bob.learn.linear = git https://gitlab.idiap.ch/bob/bob.learn.linear
+;bob.learn.em = git https://gitlab.idiap.ch/bob/bob.learn.em
+;bob.measure = git https://gitlab.idiap.ch/bob/bob.measure
+bob.db.base = git https://gitlab.idiap.ch/bob/bob.db.base
+bob.db.atnt = git https://gitlab.idiap.ch/bob/bob.db.atnt
+bob.bio.base = git git@gitlab.idiap.ch:bob/bob.bio.base branch=issue-8-remove-database-configuration
+;bob.learn.boosting = git https://gitlab.idiap.ch/bob/bob.learn.boosting
+;bob.ip.facedetect = git https://gitlab.idiap.ch/bob/bob.ip.facedetect
+;bob.ip.flandmark = git https://gitlab.idiap.ch/bob/bob.ip.flandmark
+bob.db.arface = git https://gitlab.idiap.ch/bob/bob.db.arface
+bob.db.banca = git https://gitlab.idiap.ch/bob/bob.db.banca
+bob.db.caspeal = git https://gitlab.idiap.ch/bob/bob.db.caspeal
+bob.db.frgc = git https://gitlab.idiap.ch/bob/bob.db.frgc
+bob.db.gbu = git https://gitlab.idiap.ch/bob/bob.db.gbu
+bob.db.lfw = git https://gitlab.idiap.ch/bob/bob.db.lfw
+bob.db.mobio = git https://gitlab.idiap.ch/bob/bob.db.mobio
+bob.db.multipie = git https://gitlab.idiap.ch/bob/bob.db.multipie
+bob.db.scface = git https://gitlab.idiap.ch/bob/bob.db.scface
+bob.db.xm2vts = git https://gitlab.idiap.ch/bob/bob.db.xm2vts
+
+[scripts]
+recipe = bob.buildout:scripts
+dependent-scripts = true
diff --git a/requirements.txt b/requirements.txt
index aad2c8cd1f5aadba909da6fa41ed5bded87b3433..c74af83a8cebab7ae2026642c011a408ccb4fec1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -21,3 +21,4 @@ bob.learn.boosting
 bob.ip.facedetect
 bob.ip.flandmark
 matplotlib   # for plotting
+gridtk
diff --git a/setup.py b/setup.py
index 0e4f70a23ff17f3a7c63ef5140cda18fe49d6e32..9b3d0d742085387f65e024a751de79c97d7b5dba 100644
--- a/setup.py
+++ b/setup.py
@@ -109,13 +109,13 @@ setup(
 
         'bob.bio.database': [
             'arface            = bob.bio.face.config.database.arface:database',
+            'atnt              = bob.bio.face.config.database.atnt:database',            
             'banca             = bob.bio.face.config.database.banca_english:database',
             'caspeal           = bob.bio.face.config.database.caspeal:database',
             'frgc              = bob.bio.face.config.database.frgc:database',
             'gbu               = bob.bio.face.config.database.gbu: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_image:database',
             'mobio-male        = bob.bio.face.config.database.mobio_male:database',  # MOBIO gender-dependent training
             'mobio-female      = bob.bio.face.config.database.mobio_female:database',  # MOBIO gender-dependent training
             'multipie          = bob.bio.face.config.database.multipie:database',