diff --git a/bob/db/fargo/__init__.py b/bob/db/fargo/__init__.py
index 2ab1e28b150f0549def9963e9e87de3fdd6b2579..b2178591af81c759e0fa18a8f9333f5e7353427b 100644
--- a/bob/db/fargo/__init__.py
+++ b/bob/db/fargo/__init__.py
@@ -1,3 +1,18 @@
-# see https://docs.python.org/3/library/pkgutil.html
-from pkgutil import extend_path
-__path__ = extend_path(__path__, __name__)
+#!/usr/bin/env python
+# encoding: utf-8
+# Guillaume HEUSCH <guillaume.heusch@idiap.ch>
+# Thu 22 Dec 16:16:15 CET 2016
+
+
+from .query import Database
+from bob.db.bio_filelist.models import File, Client
+
+def get_config():
+  """Returns a string containing the configuration information.
+  """
+  import bob.extension
+  return bob.extension.get_config(__name__)
+
+
+# gets sphinx autodoc done right - don't remove it
+__all__ = [_ for _ in dir() if not _.startswith('_')]
diff --git a/bob/db/fargo/driver.py b/bob/db/fargo/driver.py
new file mode 100644
index 0000000000000000000000000000000000000000..cab9b99aa6696fe89bc40e1302a31c2dffcfb4f4
--- /dev/null
+++ b/bob/db/fargo/driver.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python
+# encoding: utf-8
+# Guillaume HEUSCH <guillaume.heusch@idiap.ch>
+# Thu 22 Dec 16:23:51 CET 2016
+
+
+"""Commands the FARGO database can respond to.
+"""
+
+import os
+import sys
+from bob.db.base.driver import Interface as BaseInterface
+
+def dumplist(args):
+  """Dumps lists of files based on your criteria"""
+
+  from .query import Database
+  db = Database()
+
+  r = db.objects(
+      purposes=args.purpose,
+      groups=args.group,
+  )
+
+  output = sys.stdout
+  if args.selftest:
+    from bob.db.base.utils import null
+    output = null()
+
+  for f in r:
+    output.write('%s\n' % f.make_path(directory=args.directory,extension=args.extension))
+
+  return 0
+
+def checkfiles(args):
+  """Checks existence of files based on your criteria"""
+
+  from .query import Database
+  db = Database()
+
+  r = db.objects()
+
+  # go through all files, check if they are available on the filesystem
+  good = []
+  bad = []
+  for f in r:
+    if os.path.exists(f.make_path(args.directory, args.extension)): good.append(f)
+    else: bad.append(f)
+
+  # report
+  output = sys.stdout
+  if args.selftest:
+    from bob.db.base.utils import null
+    output = null()
+
+  if bad:
+    for f in bad:
+      output.write('Cannot find file "%s"\n' % f.make_path(args.directory, args.extension))
+    output.write('%d files (out of %d) were not found at "%s"\n' % \
+        (len(bad), len(r), args.directory))
+
+  return 0
+
+class Interface(BaseInterface):
+
+  def name(self):
+    return 'fargo'
+
+  def version(self):
+    import pkg_resources # part of setuptools
+    return pkg_resources.require('bob.db.%s' % self.name())[0].version
+
+  def files(self):
+    return ()
+
+  def type(self):
+    return 'text'
+
+  def add_commands(self, parser):
+
+    from . import __doc__ as docs
+
+    subparsers = self.setup_parser(parser,
+        "FARGO database", docs)
+
+    import argparse
+
+    # the "dumplist" action
+    parser = subparsers.add_parser('dumplist', help=dumplist.__doc__)
+    parser.add_argument('-d', '--directory', default='', help="if given, this path will be prepended to every entry returned.")
+    parser.add_argument('-e', '--extension', default='', help="if given, this extension will be appended to every entry returned.")
+    parser.add_argument('-u', '--purpose', help="if given, this value will limit the output files to those designed for the given purposes.", choices=('enroll', 'probe', ''))
+    parser.add_argument('-g', '--group', help="if given, this value will limit the output files to those belonging to a particular protocolar group.", choices=('dev', 'eval', 'world', 'optional_world_1', 'optional_world_2', ''))
+    parser.add_argument('--self-test', dest="selftest", action='store_true', help=argparse.SUPPRESS)
+    parser.set_defaults(func=dumplist) #action
+
+    # the "checkfiles" action
+    parser = subparsers.add_parser('checkfiles', help=checkfiles.__doc__)
+    parser.add_argument('-l', '--list-directory', required=True, help="The directory which contains the file lists.")
+    parser.add_argument('-d', '--directory', dest="directory", default='', help="if given, this path will be prepended to every entry returned.")
+    parser.add_argument('-e', '--extension', dest="extension", default='', help="if given, this extension will be appended to every entry returned.")
+    parser.add_argument('--self-test', dest="selftest", action='store_true', help=argparse.SUPPRESS)
+
+    parser.set_defaults(func=checkfiles) #action
diff --git a/bob/db/fargo/query.py b/bob/db/fargo/query.py
new file mode 100644
index 0000000000000000000000000000000000000000..dca299b5b4eae5ae4383f88536986e061820b8d2
--- /dev/null
+++ b/bob/db/fargo/query.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+# encoding: utf-8
+# Guillaume HEUSCH <guillaume.heusch@idiap.ch>
+# Thu 22 Dec 16:20:02 CET 2016
+
+import bob.db.bio_filelist
+
+class Database(bob.db.bio_filelist.Database):
+  """Wrapper class for the FARGO database for face verification
+  """
+
+  def __init__(self, original_directory = None, original_extension = None):
+    # call base class constructor
+    from pkg_resources import resource_filename
+    lists = resource_filename(__name__, 'lists')
+    bob.db.bio_filelist.Database.__init__(self, lists, original_directory = original_directory, original_extension = original_extension)
+
diff --git a/buildout.cfg b/buildout.cfg
index 6096dcc2db63468f8b2e6305d767bfedebcb6376..c9b9f7ed0b9ae75ffb858539cc541c2077375dd0 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -11,4 +11,4 @@ verbose = true
 
 [scripts]
 recipe = bob.buildout:scripts
-dependent-scripts = true
\ No newline at end of file
+dependent-scripts = true
diff --git a/setup.py b/setup.py
index 875f1da7cf0179ce7dccd8592a581e3ef046f4e0..50f45e1f252591f87f2d3f9b47b4226c862d0580 100644
--- a/setup.py
+++ b/setup.py
@@ -27,11 +27,11 @@ setup(
 
 
     entry_points = {
-        #'bob.db': [
-        #    'fargo = bob.db.fargo.driver:Interface',
-        #    ],
+        'bob.db': [
+            'fargo = bob.db.fargo.driver:Interface',
+            ],
         'console_scripts': [
-          'extract_images.py = bob.db.fargo.scripts.extract_images:main'
+          'extract_images.py = bob.db.fargo.scripts.extract_images:main',
           'make_file_lists.py = bob.db.fargo.scripts.make_file_lists:main'
             ],
       },