diff --git a/.gitignore b/.gitignore
index fe6b461f81366f8c6c65d82eed460766d1134c71..b3d31b4e2ef0d916c2738b740e710178009b5f43 100644
--- a/.gitignore
+++ b/.gitignore
@@ -72,8 +72,10 @@ doc/bob.io.video/
 doc/bob.ip.base/
 doc/bob.ip.caffe_extractor/
 doc/bob.ip.color/
+doc/bob.ip.dlib
 doc/bob.ip.draw/
 doc/bob.ip.facedetect/
+doc/bob.ip.facelandmarks/
 doc/bob.ip.flandmark/
 doc/bob.ip.gabor/
 doc/bob.ip.mtcnn/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index dacf9c8dee9546a77d0d5208bed1d12574a8effc..eb063aee6db7cd2afa3515f2454bf18a52856271 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,91 +1 @@
-# This build file uses template features from YAML so it is generic enough for
-# any Bob project. Don't modify it unless you know what you're doing.
-
-# Definition of global variables (all stages)
-variables:
-  CONDA_ROOT: "${CI_PROJECT_DIR}/miniconda"
-
-
-# Definition of our build pipeline order
-stages:
-  - build
-  - deploy
-
-
-# Build targets
-.build_template: &build_job
-  stage: build
-  before_script:
-    - mkdir _ci
-    - curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/master/gitlab/install.sh" > _ci/install.sh
-    - chmod 755 _ci/install.sh
-    - ./_ci/install.sh _ci master #installs ci support scripts
-    - ./_ci/before_build.sh
-    - ./before_build.sh
-  script:
-    - ./_ci/build.sh
-  after_script:
-    - ./_ci/after_build.sh
-  cache: &build_caches
-    paths:
-      - miniconda.sh
-      - ${CONDA_ROOT}/pkgs/*.tar.bz2
-      - ${CONDA_ROOT}/pkgs/urls.txt
-
-
-.build_linux_template: &linux_build_job
-  <<: *build_job
-  tags:
-    - docker
-  image: continuumio/conda-concourse-ci
-  artifacts:
-    expire_in: 1 week
-    paths:
-      - _ci/
-      - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
-  cache:
-    <<: *build_caches
-    key: "linux-cache"
-
-
-build_linux_36:
-  <<: *linux_build_job
-  variables:
-    GITLAB_CHECKOUT_STRATEGY: "https://gitlab-ci-token:${CI_BUILD_TOKEN}@gitlab.idiap.ch/"
-    PYTHON_VERSION: "3.6"
-    BUILD_EGG: "true"
-  artifacts:
-    expire_in: 1 week
-    paths:
-      - _ci/
-      - sphinx
-      - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
-
-
-# Deploy targets
-.deploy_template: &deploy_job
-  stage: deploy
-  before_script:
-    - ./_ci/install.sh _ci master #updates ci support scripts
-  script:
-    - ./_ci/deploy.sh
-  dependencies:
-    - build_linux_36
-  tags:
-    - deployer
-
-
-deploy_beta:
-  <<: *deploy_job
-  environment: beta
-  only:
-    - master
-
-
-deploy_stable:
-  <<: *deploy_job
-  environment: stable
-  only:
-    - /^v\d+\.\d+\.\d+([abc]\d*)?$/  # PEP-440 compliant version (tags)
-  except:
-    - branches
+include: 'https://gitlab.idiap.ch/bob/bob.devtools/raw/master/bob/devtools/data/gitlab-ci/docs.yaml'
diff --git a/before_build.sh b/before_build.sh
deleted file mode 100755
index e297432af45d814a023e73ab0b89abb792932404..0000000000000000000000000000000000000000
--- a/before_build.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-# to fix cloning in docker images
-GITLAB_CHECKOUT_STRATEGY="${GITLAB_CHECKOUT_STRATEGY:-git@gitlab.idiap.ch:}"
-
-# Clone all packages
-for pkg in bob `cat requirements.txt | sed -e '/^\s*#.*/d;/^\s*$/d'`; do
-    git clone --depth 1 ${GITLAB_CHECKOUT_STRATEGY}bob/${pkg}.git doc/$pkg || \
-    { git -C doc/$pkg reset --hard HEAD && \
-    git -C doc/$pkg checkout master && \
-    git -C doc/$pkg pull; }
-    if [[ -n "${CI_COMMIT_TAG}" ]]; then
-        git -C doc/$pkg fetch --tags
-        tag=`git -C doc/$pkg tag --sort='v:refname' | grep -e 'v[0-9]*\.[0-9]*\.[0-9]*$' | tail -n 1`
-        git -C doc/$pkg checkout $tag
-    fi
-done
-
-# Create extra-intersphinx.txt
-# Add newlines in the end of files
-# remove bobs, gridtk
-# remove comments
-# remove trailing whitespace
-sed -e '$s/$/\n/' \
-    -e '/^bob/d' \
-    -e '/^gridtk/d' \
-    -e 's:#.*$::g' \
-    -e 's/[[:space:]]*$//' \
-    -s \
-    doc/*/doc/extra-intersphinx.txt \
-    doc/*/requirements.txt \
-    doc/*/test-requirements.txt \
-    | sort -u > doc/extra-intersphinx.txt
-
-# Create nitpick-exceptions.txt
-# Add newlines in the end of files
-# remove comments
-# remove trailing whitespace
-sed -e '$s/$/\n/' \
-    -e 's:#.*$::g' \
-    -e 's/[[:space:]]*$//' \
-    -s \
-    doc/*/doc/nitpick-exceptions.txt \
-    | sort -u > doc/nitpick-exceptions.txt
diff --git a/conda/meta.yaml b/conda/meta.yaml
index 58ad1d7928a3d48579165224ed4572e4ba3ca52c..f44dd4e47c15d320d308f8d9dca70afaa32a2af3 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -84,8 +84,10 @@ requirements:
     - bob.ip.base
     - bob.ip.caffe_extractor
     - bob.ip.color
+    - bob.ip.dlib
     - bob.ip.draw
     - bob.ip.facedetect
+    - bob.ip.facelandmarks
     - bob.ip.flandmark
     - bob.ip.gabor
     - bob.ip.mtcnn
diff --git a/doc/conf.py b/doc/conf.py
index 4f320e324896594312fd515574b46640c6fcc3a1..4a289db1a665e8bbf0cd39e59b79e9a5efdf155b 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -33,7 +33,7 @@ extensions = [
 plot_basedir = None
 
 # Be picky about warnings
-nitpicky = True
+nitpicky = False
 
 # Ignores stuff we can't easily resolve on other project's sphinx manuals
 nitpick_ignore = []
@@ -129,7 +129,7 @@ pygments_style = 'sphinx'
 
 # Some variables which are useful for generated material
 project_variable = project.replace('.', '_')
-short_description = u'Building of Python/C++ extensions for Bob'
+short_description = u'Bob (All Packages)'
 owner = [u'Idiap Research Institute']
 
 
diff --git a/doc/index.rst b/doc/index.rst
index 1e1c2ba3fe5de54aabd8e3398e72cb94b1e0df88..4145c2ced1d05837bfad17ef2aa11b202b90d639 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -34,9 +34,11 @@ Signal, Audio, Image and Video Processing
 * :ref:`bob.ip.draw`
 * :ref:`bob.ip.gabor`
 * :ref:`bob.ip.facedetect`
+* :ref:`bob.ip.facelandmarks`
 * :ref:`bob.ip.optflow.liu`
 * :ref:`bob.ip.optflow.hornschunck`
 * :ref:`bob.ip.flandmark`
+* :ref:`bob.ip.dlib`
 * :ref:`bob.ip.qualitymeasure`
 * :ref:`bob.ip.skincolorfilter`
 * :ref:`bob.ip.mtcnn`
@@ -159,100 +161,102 @@ Index of all Packages
    :maxdepth: 1
    :titlesonly:
 
-   bob <bob/doc/index.rst>
-   bob.ap <bob.ap/doc/index.rst>
-   bob.bio.base <bob.bio.base/doc/index.rst>
-   bob.bio.caffe_face <bob.bio.caffe_face/README.rst>
-   bob.bio.face <bob.bio.face/doc/index.rst>
-   bob.bio.gmm <bob.bio.gmm/doc/index.rst>
-   bob.bio.spear <bob.bio.spear/doc/index.rst>
-   bob.bio.vein <bob.bio.vein/doc/index.rst>
-   bob.bio.video <bob.bio.video/doc/index.rst>
-   bob.blitz <bob.blitz/doc/index.rst>
-   bob.buildout <bob.buildout/doc/index.rst>
-   bob.core <bob.core/doc/index.rst>
-   bob.db.arface <bob.db.arface/doc/index.rst>
-   bob.db.asvspoof <bob.db.asvspoof/doc/index.rst>
-   bob.db.asvspoof2017 <bob.db.asvspoof2017/doc/index.rst>
-   bob.db.atnt <bob.db.atnt/doc/index.rst>
-   bob.db.atvskeystroke <bob.db.atvskeystroke/doc/index.rst>
-   bob.db.avspoof <bob.db.avspoof/doc/index.rst>
-   bob.db.banca <bob.db.banca/doc/index.rst>
-   bob.db.base <bob.db.base/doc/index.rst>
-   bob.db.biosecure <bob.db.biosecure/doc/index.rst>
-   bob.db.biosecurid.face <bob.db.biosecurid.face/doc/index.rst>
-   bob.db.casme2 <bob.db.casme2/doc/index.rst>
-   bob.db.caspeal <bob.db.caspeal/doc/index.rst>
-   bob.db.cbsr_nir_vis_2 <bob.db.cbsr_nir_vis_2/README.rst>
-   bob.db.cohface <bob.db.cohface/doc/index.rst>
-   bob.db.cuhk_cufs <bob.db.cuhk_cufs/doc/index.rst>
-   bob.db.cuhk_cufsf <bob.db.cuhk_cufsf/README.rst>
-   bob.db.frgc <bob.db.frgc/doc/index.rst>
-   bob.db.fv3d <bob.db.fv3d/doc/index.rst>
-   bob.db.gbu <bob.db.gbu/doc/index.rst>
-   bob.db.hci_tagging <bob.db.hci_tagging/doc/index.rst>
-   bob.db.ijba <bob.db.ijba/doc/index.rst>
-   bob.db.ijbc <bob.db.ijbc/README.rst>
-   bob.db.iris <bob.db.iris/doc/index.rst>
-   bob.db.kboc16 <bob.db.kboc16/doc/index.rst>
-   bob.db.lfw <bob.db.lfw/doc/index.rst>
-   bob.db.livdet2013 <bob.db.livdet2013/doc/index.rst>
-   bob.db.maskattack <bob.db./doc/index.rst>
-   bob.db.mnist <bob.db.mnist/doc/index.rst>
-   bob.db.mobio <bob.db.mobio/doc/index.rst>
-   bob.db.msu_mfsd_mod <bob.db.msu_mfsd_mod/doc/index.rst>
-   bob.db.multipie <bob.db.multipie/doc/index.rst>
-   bob.db.nist_sre12 <bob.db.nist_sre12/doc/index.rst>
-   bob.db.nivl <bob.db.nivl/README.rst>
-   bob.db.oulunpu <bob.db.oulunpu/doc/index.rst>
-   bob.db.pericrosseye <bob.db.pericrosseye/doc/index.rst>
-   bob.db.pola_thermal<bob.db.pola_thermal/README.rst>
-   bob.db.putvein <bob.db.putvein/doc/index.rst>
-   bob.db.replay <bob.db.replay/doc/index.rst>
-   bob.db.replaymobile <bob.db.replaymobile/doc/index.rst>
-   bob.db.scface <bob.db.scface/doc/index.rst>
-   bob.db.utfvp <bob.db.utfvp/doc/index.rst>
-   bob.db.uvad <bob.db.uvad/doc/index.rst>
-   bob.db.verafinger <bob.db.verafinger/doc/index.rst>
-   bob.db.voicepa <bob.db.voicepa/doc/index.rst>
-   bob.db.voxforge <bob.db.voxforge/doc/index.rst>
-   bob.db.wine <bob.db.wine/doc/index.rst>
-   bob.db.xm2vts <bob.db.xm2vts/doc/index.rst>
-   bob.db.youtube <bob.db.youtube/doc/index.rst>
-   bob.db.fargo <bob.db.fargo/doc/index.rst>
-   bob.extension <bob.extension/doc/index.rst>
-   bob.fusion.base <bob.fusion.base/doc/index.rst>
-   bob.io.audio <bob.io.audio/doc/index.rst>
-   bob.io.base <bob.io.base/doc/index.rst>
-   bob.io.image <bob.io.image/doc/index.rst>
-   bob.io.matlab <bob.io.matlab/doc/index.rst>
-   bob.io.video <bob.io.video/doc/index.rst>
-   bob.ip.base <bob.ip.base/doc/index.rst>
-   bob.ip.caffe_extractor <bob.ip.caffe_extractor/README.rst>
-   bob.ip.color <bob.ip.color/doc/index.rst>
-   bob.ip.draw <bob.ip.draw/doc/index.rst>
-   bob.ip.facedetect <bob.ip.facedetect/doc/index.rst>
-   bob.ip.flandmark <bob.ip.flandmark/doc/index.rst>
-   bob.ip.gabor <bob.ip.gabor/doc/index.rst>
-   bob.ip.mtcnn <bob.ip.mtcnn/README.rst>
-   bob.ip.optflow.hornschunck <bob.ip.optflow.hornschunck/doc/index.rst>
-   bob.ip.optflow.liu <bob.ip.optflow.liu/doc/index.rst>
-   bob.ip.qualitymeasure <bob.ip.qualitymeasure/doc/index.rst>
-   bob.ip.tensorflow_extractor <bob.ip.tensorflow_extractor/README.rst>
-   bob.ip.skincolorfilter <bob.ip.skincolorfilter/doc/index.rst>
-   bob.learn.activation <bob.learn.activation/doc/index.rst>
-   bob.learn.boosting <bob.learn.boosting/doc/index.rst>
-   bob.learn.em <bob.learn.em/doc/index.rst>
-   bob.learn.libsvm <bob.learn.libsvm/doc/index.rst>
-   bob.learn.linear <bob.learn.linear/doc/index.rst>
-   bob.learn.mlp <bob.learn.mlp/doc/index.rst>
-   bob.math <bob.math/doc/index.rst>
-   bob.measure <bob.measure/doc/index.rst>
-   bob.pad.base <bob.pad.base/doc/index.rst>
-   bob.pad.face <bob.pad.face/doc/index.rst>
-   bob.pad.vein <bob.pad.vein/doc/index.rst>
-   bob.pad.voice <bob.pad.voice/doc/index.rst>
-   bob.sp <bob.sp/doc/index.rst>
-   bob.rppg.base <bob.rppg.base/README.rst>
-   gridtk <gridtk/doc/index.rst>
+   bob <bob/bob/doc/index.rst>
+   bob.ap <bob/bob.ap/doc/index.rst>
+   bob.bio.base <bob/bob.bio.base/doc/index.rst>
+   bob.bio.caffe_face <bob/bob.bio.caffe_face/README.rst>
+   bob.bio.face <bob/bob.bio.face/doc/index.rst>
+   bob.bio.gmm <bob/bob.bio.gmm/doc/index.rst>
+   bob.bio.spear <bob/bob.bio.spear/doc/index.rst>
+   bob.bio.vein <bob/bob.bio.vein/doc/index.rst>
+   bob.bio.video <bob/bob.bio.video/doc/index.rst>
+   bob.blitz <bob/bob.blitz/doc/index.rst>
+   bob.buildout <bob/bob.buildout/doc/index.rst>
+   bob.core <bob/bob.core/doc/index.rst>
+   bob.db.arface <bob/bob.db.arface/doc/index.rst>
+   bob.db.asvspoof <bob/bob.db.asvspoof/doc/index.rst>
+   bob.db.asvspoof2017 <bob/bob.db.asvspoof2017/doc/index.rst>
+   bob.db.atnt <bob/bob.db.atnt/doc/index.rst>
+   bob.db.atvskeystroke <bob/bob.db.atvskeystroke/doc/index.rst>
+   bob.db.avspoof <bob/bob.db.avspoof/doc/index.rst>
+   bob.db.banca <bob/bob.db.banca/doc/index.rst>
+   bob.db.base <bob/bob.db.base/doc/index.rst>
+   bob.db.biosecure <bob/bob.db.biosecure/doc/index.rst>
+   bob.db.biosecurid.face <bob/bob.db.biosecurid.face/doc/index.rst>
+   bob.db.casme2 <bob/bob.db.casme2/doc/index.rst>
+   bob.db.caspeal <bob/bob.db.caspeal/doc/index.rst>
+   bob.db.cbsr_nir_vis_2 <bob/bob.db.cbsr_nir_vis_2/README.rst>
+   bob.db.cohface <bob/bob.db.cohface/doc/index.rst>
+   bob.db.cuhk_cufs <bob/bob.db.cuhk_cufs/doc/index.rst>
+   bob.db.cuhk_cufsf <bob/bob.db.cuhk_cufsf/README.rst>
+   bob.db.frgc <bob/bob.db.frgc/doc/index.rst>
+   bob.db.fv3d <bob/bob.db.fv3d/doc/index.rst>
+   bob.db.gbu <bob/bob.db.gbu/doc/index.rst>
+   bob.db.hci_tagging <bob/bob.db.hci_tagging/doc/index.rst>
+   bob.db.ijba <bob/bob.db.ijba/doc/index.rst>
+   bob.db.ijbc <bob/bob.db.ijbc/README.rst>
+   bob.db.iris <bob/bob.db.iris/doc/index.rst>
+   bob.db.kboc16 <bob/bob.db.kboc16/doc/index.rst>
+   bob.db.lfw <bob/bob.db.lfw/doc/index.rst>
+   bob.db.livdet2013 <bob/bob.db.livdet2013/doc/index.rst>
+   bob.db.maskattack <bob/bob.db./doc/index.rst>
+   bob.db.mnist <bob/bob.db.mnist/doc/index.rst>
+   bob.db.mobio <bob/bob.db.mobio/doc/index.rst>
+   bob.db.msu_mfsd_mod <bob/bob.db.msu_mfsd_mod/doc/index.rst>
+   bob.db.multipie <bob/bob.db.multipie/doc/index.rst>
+   bob.db.nist_sre12 <bob/bob.db.nist_sre12/doc/index.rst>
+   bob.db.nivl <bob/bob.db.nivl/README.rst>
+   bob.db.oulunpu <bob/bob.db.oulunpu/doc/index.rst>
+   bob.db.pericrosseye <bob/bob.db.pericrosseye/doc/index.rst>
+   bob.db.pola_thermal<bob/bob.db.pola_thermal/README.rst>
+   bob.db.putvein <bob/bob.db.putvein/doc/index.rst>
+   bob.db.replay <bob/bob.db.replay/doc/index.rst>
+   bob.db.replaymobile <bob/bob.db.replaymobile/doc/index.rst>
+   bob.db.scface <bob/bob.db.scface/doc/index.rst>
+   bob.db.utfvp <bob/bob.db.utfvp/doc/index.rst>
+   bob.db.uvad <bob/bob.db.uvad/doc/index.rst>
+   bob.db.verafinger <bob/bob.db.verafinger/doc/index.rst>
+   bob.db.voicepa <bob/bob.db.voicepa/doc/index.rst>
+   bob.db.voxforge <bob/bob.db.voxforge/doc/index.rst>
+   bob.db.wine <bob/bob.db.wine/doc/index.rst>
+   bob.db.xm2vts <bob/bob.db.xm2vts/doc/index.rst>
+   bob.db.youtube <bob/bob.db.youtube/doc/index.rst>
+   bob.db.fargo <bob/bob.db.fargo/doc/index.rst>
+   bob.extension <bob/bob.extension/doc/index.rst>
+   bob.fusion.base <bob/bob.fusion.base/doc/index.rst>
+   bob.io.audio <bob/bob.io.audio/doc/index.rst>
+   bob.io.base <bob/bob.io.base/doc/index.rst>
+   bob.io.image <bob/bob.io.image/doc/index.rst>
+   bob.io.matlab <bob/bob.io.matlab/doc/index.rst>
+   bob.io.video <bob/bob.io.video/doc/index.rst>
+   bob.ip.base <bob/bob.ip.base/doc/index.rst>
+   bob.ip.caffe_extractor <bob/bob.ip.caffe_extractor/README.rst>
+   bob.ip.color <bob/bob.ip.color/doc/index.rst>
+   bob.ip.dlib <bob/bob.ip.dlib/doc/index.rst>
+   bob.ip.draw <bob/bob.ip.draw/doc/index.rst>
+   bob.ip.facedetect <bob/bob.ip.facedetect/doc/index.rst>
+   bob.ip.facelandmarks <bob/bob.ip.facelandmarks/doc/index.rst>
+   bob.ip.flandmark <bob/bob.ip.flandmark/doc/index.rst>
+   bob.ip.gabor <bob/bob.ip.gabor/doc/index.rst>
+   bob.ip.mtcnn <bob/bob.ip.mtcnn/README.rst>
+   bob.ip.optflow.hornschunck <bob/bob.ip.optflow.hornschunck/doc/index.rst>
+   bob.ip.optflow.liu <bob/bob.ip.optflow.liu/doc/index.rst>
+   bob.ip.qualitymeasure <bob/bob.ip.qualitymeasure/doc/index.rst>
+   bob.ip.tensorflow_extractor <bob/bob.ip.tensorflow_extractor/README.rst>
+   bob.ip.skincolorfilter <bob/bob.ip.skincolorfilter/doc/index.rst>
+   bob.learn.activation <bob/bob.learn.activation/doc/index.rst>
+   bob.learn.boosting <bob/bob.learn.boosting/doc/index.rst>
+   bob.learn.em <bob/bob.learn.em/doc/index.rst>
+   bob.learn.libsvm <bob/bob.learn.libsvm/doc/index.rst>
+   bob.learn.linear <bob/bob.learn.linear/doc/index.rst>
+   bob.learn.mlp <bob/bob.learn.mlp/doc/index.rst>
+   bob.math <bob/bob.math/doc/index.rst>
+   bob.measure <bob/bob.measure/doc/index.rst>
+   bob.pad.base <bob/bob.pad.base/doc/index.rst>
+   bob.pad.face <bob/bob.pad.face/doc/index.rst>
+   bob.pad.vein <bob/bob.pad.vein/doc/index.rst>
+   bob.pad.voice <bob/bob.pad.voice/doc/index.rst>
+   bob.sp <bob/bob.sp/doc/index.rst>
+   bob.rppg.base <bob/bob.rppg.base/README.rst>
+   gridtk <bob/gridtk/doc/index.rst>
    readme_index.rst
diff --git a/doc/plot/convolve.py b/doc/plot/convolve.py
index 22956a994debd9077627ce0b49ee829c75efdf31..6fb55a06ebf013e5f8a7f1495a1251e9c9deff4d 120000
--- a/doc/plot/convolve.py
+++ b/doc/plot/convolve.py
@@ -1 +1 @@
-../bob.ip.caffe_extractor/doc/plot/convolve.py
\ No newline at end of file
+../bob/bob.ip.caffe_extractor/doc/plot/convolve.py
\ No newline at end of file
diff --git a/doc/plot/detect_faces_mtcnn.py b/doc/plot/detect_faces_mtcnn.py
new file mode 120000
index 0000000000000000000000000000000000000000..ede561039c4f723b3b6220e2fa39f4ba53842bd0
--- /dev/null
+++ b/doc/plot/detect_faces_mtcnn.py
@@ -0,0 +1 @@
+../bob/bob.ip.tensorflow_extractor/doc/plot/detect_faces_mtcnn.py
\ No newline at end of file
diff --git a/doc/plot/detect_single_face.py b/doc/plot/detect_single_face.py
index 11ea1eb743f4e6cf8b1859064fc9ba6fffb5d0b7..379f95a72d1a97769def1516afe1daef2aec6a4a 120000
--- a/doc/plot/detect_single_face.py
+++ b/doc/plot/detect_single_face.py
@@ -1 +1 @@
-../bob.ip.facedetect/doc/plot/detect_single_face.py
\ No newline at end of file
+../bob/bob.ip.facedetect/doc/plot/detect_single_face.py
\ No newline at end of file
diff --git a/doc/plot/disparity.py b/doc/plot/disparity.py
index 39f034f797789aaad768076b633625a32bde3821..336a16c17e0f7d51a9902537ae9a20695186ee21 120000
--- a/doc/plot/disparity.py
+++ b/doc/plot/disparity.py
@@ -1 +1 @@
-../bob.ip.gabor/doc/plot/disparity.py
\ No newline at end of file
+../bob/bob.ip.gabor/doc/plot/disparity.py
\ No newline at end of file
diff --git a/doc/plot/face_eyes_norm.py b/doc/plot/face_eyes_norm.py
index 14d95561c4a032d945a7f329c295bc0140a5c541..373d091b818487b0bdf173713803fbb4ea71010a 120000
--- a/doc/plot/face_eyes_norm.py
+++ b/doc/plot/face_eyes_norm.py
@@ -1 +1 @@
-../bob.ip.base/doc/plot/face_eyes_norm.py
\ No newline at end of file
+../bob/bob.ip.base/doc/plot/face_eyes_norm.py
\ No newline at end of file
diff --git a/doc/plot/gaussian.py b/doc/plot/gaussian.py
index ae50407eb1390e874ba4045c32591c168bc52e24..276b59e3613589db0c5f0556c7fb08ee09f3c7ac 120000
--- a/doc/plot/gaussian.py
+++ b/doc/plot/gaussian.py
@@ -1 +1 @@
-../bob.ip.base/doc/plot/gaussian.py
\ No newline at end of file
+../bob/bob.ip.base/doc/plot/gaussian.py
\ No newline at end of file
diff --git a/doc/plot/iris_lda.py b/doc/plot/iris_lda.py
index 697a2af2400ca50b4808926512dd9bea0a9680ce..28cbfda1a8b1af14231d89d2dd28e1db66d0b296 120000
--- a/doc/plot/iris_lda.py
+++ b/doc/plot/iris_lda.py
@@ -1 +1 @@
-../bob/doc/plot/iris_lda.py
\ No newline at end of file
+../bob/bob/doc/plot/iris_lda.py
\ No newline at end of file
diff --git a/doc/plot/iris_lda_roc.py b/doc/plot/iris_lda_roc.py
index 28e3ecf06dcdd02c1e2809c18347ff45b86008aa..09d614eb83c2132f22339be6144da88b7dd39ac5 120000
--- a/doc/plot/iris_lda_roc.py
+++ b/doc/plot/iris_lda_roc.py
@@ -1 +1 @@
-../bob/doc/plot/iris_lda_roc.py
\ No newline at end of file
+../bob/bob/doc/plot/iris_lda_roc.py
\ No newline at end of file
diff --git a/doc/plot/plot_ISV.py b/doc/plot/plot_ISV.py
index 7b69f3f5306b56ab15a0775b45edb9b73ddb8c3d..24fb957c5d07b48f7cb4ab48e966a00d88ec3569 120000
--- a/doc/plot/plot_ISV.py
+++ b/doc/plot/plot_ISV.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_ISV.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_ISV.py
\ No newline at end of file
diff --git a/doc/plot/plot_JFA.py b/doc/plot/plot_JFA.py
index 40874cfedeed74bda446b62684787d215beb094e..2d37dd1d0913213daab555c732ddb083a78fe3c3 120000
--- a/doc/plot/plot_JFA.py
+++ b/doc/plot/plot_JFA.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_JFA.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_JFA.py
\ No newline at end of file
diff --git a/doc/plot/plot_MAP.py b/doc/plot/plot_MAP.py
index a53b1eecd36de28627a467bbf7337779bfe9df17..f564608341a738416704403850821501d9979922 120000
--- a/doc/plot/plot_MAP.py
+++ b/doc/plot/plot_MAP.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_MAP.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_MAP.py
\ No newline at end of file
diff --git a/doc/plot/plot_ML.py b/doc/plot/plot_ML.py
index 8937e6644b40cf5450b05d35138f13be27a51aa3..5e2aeb4b520ebd9b978f5f151e33e56b8584e134 120000
--- a/doc/plot/plot_ML.py
+++ b/doc/plot/plot_ML.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_ML.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_ML.py
\ No newline at end of file
diff --git a/doc/plot/plot_Tnorm.py b/doc/plot/plot_Tnorm.py
index 76e67d16bef4b0c97ae89fbc96c8a9b77c58c425..fa9e03aa959a386a52a514826366d4ad56fcbdca 120000
--- a/doc/plot/plot_Tnorm.py
+++ b/doc/plot/plot_Tnorm.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_Tnorm.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_Tnorm.py
\ No newline at end of file
diff --git a/doc/plot/plot_ZTnorm.py b/doc/plot/plot_ZTnorm.py
index caf451154127d3f7d90696be33dbab922ee59b52..45c86231b83c321a7fdb16d8bf3d60308e13d4a2 120000
--- a/doc/plot/plot_ZTnorm.py
+++ b/doc/plot/plot_ZTnorm.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_ZTnorm.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_ZTnorm.py
\ No newline at end of file
diff --git a/doc/plot/plot_Znorm.py b/doc/plot/plot_Znorm.py
index 7e93c169a9bf22d9eef491f9a4b401c1161a4638..a8f529faf6cd9f3c5c45f231bfbe460ee3ba00c0 120000
--- a/doc/plot/plot_Znorm.py
+++ b/doc/plot/plot_Znorm.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_Znorm.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_Znorm.py
\ No newline at end of file
diff --git a/doc/plot/plot_align_faces.py b/doc/plot/plot_align_faces.py
index 7fcacb9051e3c4d2f9f4472611782b82bbe3f27c..22fc5716768bf8463a81a802470844fa0bba73e1 120000
--- a/doc/plot/plot_align_faces.py
+++ b/doc/plot/plot_align_faces.py
@@ -1 +1 @@
-../bob.ip.dlib/doc/plot/plot_align_faces.py
\ No newline at end of file
+../bob/bob.ip.dlib/doc/plot/plot_align_faces.py
\ No newline at end of file
diff --git a/doc/plot/plot_iVector.py b/doc/plot/plot_iVector.py
index 35946058f8f50605da91ffa2bb541652729779be..5a30f1c3b8c5b0b4d0e03f729d6db0b371178f92 120000
--- a/doc/plot/plot_iVector.py
+++ b/doc/plot/plot_iVector.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_iVector.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_iVector.py
\ No newline at end of file
diff --git a/doc/plot/plot_kmeans.py b/doc/plot/plot_kmeans.py
index 492fd4079c96a9cc8a1e4d51237d4d063c5c3aa3..8c05af0489e20f9f3e9ecc394a854a2084074997 120000
--- a/doc/plot/plot_kmeans.py
+++ b/doc/plot/plot_kmeans.py
@@ -1 +1 @@
-../bob.learn.em/doc/plot/plot_kmeans.py
\ No newline at end of file
+../bob/bob.learn.em/doc/plot/plot_kmeans.py
\ No newline at end of file
diff --git a/doc/plot/plot_landmarks.py b/doc/plot/plot_landmarks.py
index 69f47ca29ffd648f4b81a3c16518c560e21fdbe1..26e6b86bd38267e39e277253f77ba08665870792 120000
--- a/doc/plot/plot_landmarks.py
+++ b/doc/plot/plot_landmarks.py
@@ -1 +1 @@
-../bob.ip.dlib/doc/plot/plot_landmarks.py
\ No newline at end of file
+../bob/bob.ip.dlib/doc/plot/plot_landmarks.py
\ No newline at end of file
diff --git a/doc/plot/plot_multiple_faces.py b/doc/plot/plot_multiple_faces.py
index e1b72d1edc20865c4334d8f0f12f9ed06190cc50..f9d68cec9e7271668a656d3826dfb0b02cc829a3 120000
--- a/doc/plot/plot_multiple_faces.py
+++ b/doc/plot/plot_multiple_faces.py
@@ -1 +1 @@
-../bob.ip.dlib/doc/plot/plot_multiple_faces.py
\ No newline at end of file
+../bob/bob.ip.dlib/doc/plot/plot_multiple_faces.py
\ No newline at end of file
diff --git a/doc/plot/plot_single_faces.py b/doc/plot/plot_single_faces.py
index 6967eb431b89f0a20325bb77dab01c47bfaef405..67ce5abf96a7ac4c8e4c9a53e9a381fa82229263 120000
--- a/doc/plot/plot_single_faces.py
+++ b/doc/plot/plot_single_faces.py
@@ -1 +1 @@
-../bob.ip.dlib/doc/plot/plot_single_faces.py
\ No newline at end of file
+../bob/bob.ip.dlib/doc/plot/plot_single_faces.py
\ No newline at end of file
diff --git a/doc/plot/show_lena.py b/doc/plot/show_lena.py
index ddb8d9775d870516f2479e58a871491a56cc2d9b..e2b62da6be140a86ea7ba89fe07bf8d30f8a5852 120000
--- a/doc/plot/show_lena.py
+++ b/doc/plot/show_lena.py
@@ -1 +1 @@
-../bob.ip.flandmark/doc/plot/show_lena.py
\ No newline at end of file
+../bob/bob.ip.flandmark/doc/plot/show_lena.py
\ No newline at end of file
diff --git a/doc/plot/similarity.py b/doc/plot/similarity.py
index 419c4c7f40f65693c290f4a6f801143b001f87d3..998b0205e62ef9929e20e30197e11dbfa88b528f 120000
--- a/doc/plot/similarity.py
+++ b/doc/plot/similarity.py
@@ -1 +1 @@
-../bob.ip.gabor/doc/plot/similarity.py
\ No newline at end of file
+../bob/bob.ip.gabor/doc/plot/similarity.py
\ No newline at end of file
diff --git a/doc/plot/single_face_lmks.py b/doc/plot/single_face_lmks.py
index 56943ef705388e992d83d6f15172a853b819ef54..a3d4cc942c3cd3f723da4d87ab07a7c95d78612c 120000
--- a/doc/plot/single_face_lmks.py
+++ b/doc/plot/single_face_lmks.py
@@ -1 +1 @@
-../bob.ip.facelandmarks/doc/plot/single_face_lmks.py
\ No newline at end of file
+../bob/bob.ip.facelandmarks/doc/plot/single_face_lmks.py
\ No newline at end of file
diff --git a/doc/plot/sobel.py b/doc/plot/sobel.py
index 6d257585d87f9d5bcb66cd1342a6611b1611d301..d252e0c27375c11b011a082c0d23f7ffbb71c5b1 120000
--- a/doc/plot/sobel.py
+++ b/doc/plot/sobel.py
@@ -1 +1 @@
-../bob.ip.base/doc/plot/sobel.py
\ No newline at end of file
+../bob/bob.ip.base/doc/plot/sobel.py
\ No newline at end of file
diff --git a/doc/plot/transform.py b/doc/plot/transform.py
index 58e109862a112b190dd289f463179f362cc97748..8854a7bed116e28dd6b5e4e26dfc70bee6f2ad3e 120000
--- a/doc/plot/transform.py
+++ b/doc/plot/transform.py
@@ -1 +1 @@
-../bob.ip.gabor/doc/plot/transform.py
\ No newline at end of file
+../bob/bob.ip.gabor/doc/plot/transform.py
\ No newline at end of file
diff --git a/doc/plot/wavelet.py b/doc/plot/wavelet.py
index 235d4a025196a59b715dc68ab057895a96b835a1..14aa7b9857bf1663240e9a1a9ab3fe9cb4be9b40 120000
--- a/doc/plot/wavelet.py
+++ b/doc/plot/wavelet.py
@@ -1 +1 @@
-../bob.ip.gabor/doc/plot/wavelet.py
\ No newline at end of file
+../bob/bob.ip.gabor/doc/plot/wavelet.py
\ No newline at end of file
diff --git a/doc/pyplots/detect_skin_pixels.py b/doc/pyplots/detect_skin_pixels.py
index d7643e3786fb2a39298a8142bb8d418528c52cf7..4360674fe9d203dd5d7f39359a3d22465db565fe 120000
--- a/doc/pyplots/detect_skin_pixels.py
+++ b/doc/pyplots/detect_skin_pixels.py
@@ -1 +1 @@
-../bob.ip.skincolorfilter/doc/pyplots/detect_skin_pixels.py
\ No newline at end of file
+../bob/bob.ip.skincolorfilter/doc/pyplots/detect_skin_pixels.py
\ No newline at end of file
diff --git a/doc/readme_index.rst b/doc/readme_index.rst
index eb321de590fe5dee3e8360f4c0625bd8e4021529..316fed0220412e840ef4925f4325e640b8a6dd60 100644
--- a/doc/readme_index.rst
+++ b/doc/readme_index.rst
@@ -7,99 +7,101 @@ README of all Packages
    :maxdepth: 1
    :titlesonly:
 
-   bob <bob/README.rst>
-   bob.ap <bob.ap/README.rst>
-   bob.bio.base <bob.bio.base/README.rst>
-   bob.bio.caffe_face <bob.bio.caffe_face/README.rst>
-   bob.bio.face <bob.bio.face/README.rst>
-   bob.bio.gmm <bob.bio.gmm/README.rst>
-   bob.bio.spear <bob.bio.spear/README.rst>
-   bob.bio.vein <bob.bio.vein/README.rst>
-   bob.bio.video <bob.bio.video/README.rst>
-   bob.blitz <bob.blitz/README.rst>
-   bob.buildout <bob.buildout/README.rst>
-   bob.core <bob.core/README.rst>
-   bob.db.arface <bob.db.arface/README.rst>
-   bob.db.asvspoof <bob.db.asvspoof/README.rst>
-   bob.db.asvspoof2017 <bob.db.asvspoof2017/README.rst>
-   bob.db.atnt <bob.db.atnt/README.rst>
-   bob.db.atvskeystroke <bob.db.atvskeystroke/README.rst>
-   bob.db.avspoof <bob.db.avspoof/README.rst>
-   bob.db.banca <bob.db.banca/README.rst>
-   bob.db.base <bob.db.base/README.rst>
-   bob.db.biosecure <bob.db.biosecure/README.rst>
-   bob.db.biosecurid.face <bob.db.biosecurid.face/README.rst>
-   bob.db.casme2 <bob.db.casme2/README.rst>
-   bob.db.caspeal <bob.db.caspeal/README.rst>
-   bob.db.cbsr_nir_vis_2 <bob.db.cbsr_nir_vis_2/README.rst>
-   bob.db.cohface <bob.db.cohface/README.rst>
-   bob.db.cuhk_cufs <bob.db.cuhk_cufs/README.rst>
-   bob.db.cuhk_cufsf <bob.db.cuhk_cufsf/README.rst>
-   bob.db.frgc <bob.db.frgc/README.rst>
-   bob.db.fv3d <bob.db.fv3d/README.rst>
-   bob.db.gbu <bob.db.gbu/README.rst>
-   bob.db.hci_tagging <bob.db.hci_tagging/README.rst>
-   bob.db.ijba <bob.db.ijba/README.rst>
-   bob.db.ijbc <bob.db.ijbc/README.rst>
-   bob.db.iris <bob.db.iris/README.rst>
-   bob.db.kboc16 <bob.db.kboc16/README.rst>
-   bob.db.lfw <bob.db.lfw/README.rst>
-   bob.db.livdet2013 <bob.db.livdet2013/README.rst>
-   bob.db.maskattack <bob.db.maskattack/README.rst>
-   bob.db.mnist <bob.db.mnist/README.rst>
-   bob.db.mobio <bob.db.mobio/README.rst>
-   bob.db.msu_mfsd_mod <bob.db.msu_mfsd_mod/README.rst>
-   bob.db.multipie <bob.db.multipie/README.rst>
-   bob.db.nist_sre12 <bob.db.nist_sre12/README.rst>
-   bob.db.nivl <bob.db.nivl/README.rst>
-   bob.db.oulunpu <bob.db.oulunpu/README.rst>
-   bob.db.pericrosseye <bob.db.pericrosseye/README.rst>
-   bob.db.pola_thermal <bob.db.pola_thermal/README.rst>
-   bob.db.putvein <bob.db.putvein/README.rst>
-   bob.db.replay <bob.db.replay/README.rst>
-   bob.db.replaymobile <bob.db.replaymobile/README.rst>
-   bob.db.scface <bob.db.scface/README.rst>
-   bob.db.utfvp <bob.db.utfvp/README.rst>
-   bob.db.uvad <bob.db.uvad/README.rst>
-   bob.db.verafinger <bob.db.verafinger/README.rst>
-   bob.db.voicepa <bob.db.voicepa/README.rst>
-   bob.db.voxforge <bob.db.voxforge/README.rst>
-   bob.db.wine <bob.db.wine/README.rst>
-   bob.db.xm2vts <bob.db.xm2vts/README.rst>
-   bob.db.youtube <bob.db.youtube/README.rst>
-   bob.db.fargo <bob.db.fargo/README.rst>
-   bob.extension <bob.extension/README.rst>
-   bob.fusion.base <bob.fusion.base/README.rst>
-   bob.io.audio <bob.io.audio/README.rst>
-   bob.io.base <bob.io.base/README.rst>
-   bob.io.image <bob.io.image/README.rst>
-   bob.io.matlab <bob.io.matlab/README.rst>
-   bob.io.video <bob.io.video/README.rst>
-   bob.ip.base <bob.ip.base/README.rst>
-   bob.ip.caffe_extractor <bob.ip.caffe_extractor/README.rst>
-   bob.ip.color <bob.ip.color/README.rst>
-   bob.ip.draw <bob.ip.draw/README.rst>
-   bob.ip.facedetect <bob.ip.facedetect/README.rst>
-   bob.ip.flandmark <bob.ip.flandmark/README.rst>
-   bob.ip.gabor <bob.ip.gabor/README.rst>
-   bob.ip.mtcnn <bob.ip.mtcnn/README.rst>
-   bob.ip.optflow.hornschunck <bob.ip.optflow.hornschunck/README.rst>
-   bob.ip.optflow.liu <bob.ip.optflow.liu/README.rst>
-   bob.ip.qualitymeasure <bob.ip.qualitymeasure/README.rst>
-   bob.ip.skincolorfilter <bob.ip.skincolorfilter/README.rst>
-   bob.ip.tensorflow_extractor <bob.ip.tensorflow_extractor/README.rst>
-   bob.learn.activation <bob.learn.activation/README.rst>
-   bob.learn.boosting <bob.learn.boosting/README.rst>
-   bob.learn.em <bob.learn.em/README.rst>
-   bob.learn.libsvm <bob.learn.libsvm/README.rst>
-   bob.learn.linear <bob.learn.linear/README.rst>
-   bob.learn.mlp <bob.learn.mlp/README.rst>
-   bob.math <bob.math/README.rst>
-   bob.measure <bob.measure/README.rst>
-   bob.pad.base <bob.pad.base/README.rst>
-   bob.pad.face <bob.pad.face/README.rst>
-   bob.pad.vein <bob.pad.vein/README.rst>
-   bob.pad.voice <bob.pad.voice/README.rst>
-   bob.rppg.base <bob.rppg.base/README.rst>
-   bob.sp <bob.sp/README.rst>
-   gridtk <gridtk/README.rst>
+   bob <bob/bob/README.rst>
+   bob.ap <bob/bob.ap/README.rst>
+   bob.bio.base <bob/bob.bio.base/README.rst>
+   bob.bio.caffe_face <bob/bob.bio.caffe_face/README.rst>
+   bob.bio.face <bob/bob.bio.face/README.rst>
+   bob.bio.gmm <bob/bob.bio.gmm/README.rst>
+   bob.bio.spear <bob/bob.bio.spear/README.rst>
+   bob.bio.vein <bob/bob.bio.vein/README.rst>
+   bob.bio.video <bob/bob.bio.video/README.rst>
+   bob.blitz <bob/bob.blitz/README.rst>
+   bob.buildout <bob/bob.buildout/README.rst>
+   bob.core <bob/bob.core/README.rst>
+   bob.db.arface <bob/bob.db.arface/README.rst>
+   bob.db.asvspoof <bob/bob.db.asvspoof/README.rst>
+   bob.db.asvspoof2017 <bob/bob.db.asvspoof2017/README.rst>
+   bob.db.atnt <bob/bob.db.atnt/README.rst>
+   bob.db.atvskeystroke <bob/bob.db.atvskeystroke/README.rst>
+   bob.db.avspoof <bob/bob.db.avspoof/README.rst>
+   bob.db.banca <bob/bob.db.banca/README.rst>
+   bob.db.base <bob/bob.db.base/README.rst>
+   bob.db.biosecure <bob/bob.db.biosecure/README.rst>
+   bob.db.biosecurid.face <bob/bob.db.biosecurid.face/README.rst>
+   bob.db.casme2 <bob/bob.db.casme2/README.rst>
+   bob.db.caspeal <bob/bob.db.caspeal/README.rst>
+   bob.db.cbsr_nir_vis_2 <bob/bob.db.cbsr_nir_vis_2/README.rst>
+   bob.db.cohface <bob/bob.db.cohface/README.rst>
+   bob.db.cuhk_cufs <bob/bob.db.cuhk_cufs/README.rst>
+   bob.db.cuhk_cufsf <bob/bob.db.cuhk_cufsf/README.rst>
+   bob.db.frgc <bob/bob.db.frgc/README.rst>
+   bob.db.fv3d <bob/bob.db.fv3d/README.rst>
+   bob.db.gbu <bob/bob.db.gbu/README.rst>
+   bob.db.hci_tagging <bob/bob.db.hci_tagging/README.rst>
+   bob.db.ijba <bob/bob.db.ijba/README.rst>
+   bob.db.ijbc <bob/bob.db.ijbc/README.rst>
+   bob.db.iris <bob/bob.db.iris/README.rst>
+   bob.db.kboc16 <bob/bob.db.kboc16/README.rst>
+   bob.db.lfw <bob/bob.db.lfw/README.rst>
+   bob.db.livdet2013 <bob/bob.db.livdet2013/README.rst>
+   bob.db.maskattack <bob/bob.db.maskattack/README.rst>
+   bob.db.mnist <bob/bob.db.mnist/README.rst>
+   bob.db.mobio <bob/bob.db.mobio/README.rst>
+   bob.db.msu_mfsd_mod <bob/bob.db.msu_mfsd_mod/README.rst>
+   bob.db.multipie <bob/bob.db.multipie/README.rst>
+   bob.db.nist_sre12 <bob/bob.db.nist_sre12/README.rst>
+   bob.db.nivl <bob/bob.db.nivl/README.rst>
+   bob.db.oulunpu <bob/bob.db.oulunpu/README.rst>
+   bob.db.pericrosseye <bob/bob.db.pericrosseye/README.rst>
+   bob.db.pola_thermal <bob/bob.db.pola_thermal/README.rst>
+   bob.db.putvein <bob/bob.db.putvein/README.rst>
+   bob.db.replay <bob/bob.db.replay/README.rst>
+   bob.db.replaymobile <bob/bob.db.replaymobile/README.rst>
+   bob.db.scface <bob/bob.db.scface/README.rst>
+   bob.db.utfvp <bob/bob.db.utfvp/README.rst>
+   bob.db.uvad <bob/bob.db.uvad/README.rst>
+   bob.db.verafinger <bob/bob.db.verafinger/README.rst>
+   bob.db.voicepa <bob/bob.db.voicepa/README.rst>
+   bob.db.voxforge <bob/bob.db.voxforge/README.rst>
+   bob.db.wine <bob/bob.db.wine/README.rst>
+   bob.db.xm2vts <bob/bob.db.xm2vts/README.rst>
+   bob.db.youtube <bob/bob.db.youtube/README.rst>
+   bob.db.fargo <bob/bob.db.fargo/README.rst>
+   bob.extension <bob/bob.extension/README.rst>
+   bob.fusion.base <bob/bob.fusion.base/README.rst>
+   bob.io.audio <bob/bob.io.audio/README.rst>
+   bob.io.base <bob/bob.io.base/README.rst>
+   bob.io.image <bob/bob.io.image/README.rst>
+   bob.io.matlab <bob/bob.io.matlab/README.rst>
+   bob.io.video <bob/bob.io.video/README.rst>
+   bob.ip.base <bob/bob.ip.base/README.rst>
+   bob.ip.caffe_extractor <bob/bob.ip.caffe_extractor/README.rst>
+   bob.ip.color <bob/bob.ip.color/README.rst>
+   bob.ip.dlib <bob/bob.ip.dlib/README.rst>
+   bob.ip.draw <bob/bob.ip.draw/README.rst>
+   bob.ip.facedetect <bob/bob.ip.facedetect/README.rst>
+   bob.ip.facelandmarks <bob/bob.ip.facelandmarks/README.rst>
+   bob.ip.flandmark <bob/bob.ip.flandmark/README.rst>
+   bob.ip.gabor <bob/bob.ip.gabor/README.rst>
+   bob.ip.mtcnn <bob/bob.ip.mtcnn/README.rst>
+   bob.ip.optflow.hornschunck <bob/bob.ip.optflow.hornschunck/README.rst>
+   bob.ip.optflow.liu <bob/bob.ip.optflow.liu/README.rst>
+   bob.ip.qualitymeasure <bob/bob.ip.qualitymeasure/README.rst>
+   bob.ip.skincolorfilter <bob/bob.ip.skincolorfilter/README.rst>
+   bob.ip.tensorflow_extractor <bob/bob.ip.tensorflow_extractor/README.rst>
+   bob.learn.activation <bob/bob.learn.activation/README.rst>
+   bob.learn.boosting <bob/bob.learn.boosting/README.rst>
+   bob.learn.em <bob/bob.learn.em/README.rst>
+   bob.learn.libsvm <bob/bob.learn.libsvm/README.rst>
+   bob.learn.linear <bob/bob.learn.linear/README.rst>
+   bob.learn.mlp <bob/bob.learn.mlp/README.rst>
+   bob.math <bob/bob.math/README.rst>
+   bob.measure <bob/bob.measure/README.rst>
+   bob.pad.base <bob/bob.pad.base/README.rst>
+   bob.pad.face <bob/bob.pad.face/README.rst>
+   bob.pad.vein <bob/bob.pad.vein/README.rst>
+   bob.pad.voice <bob/bob.pad.voice/README.rst>
+   bob.rppg.base <bob/bob.rppg.base/README.rst>
+   bob.sp <bob/bob.sp/README.rst>
+   gridtk <bob/gridtk/README.rst>
diff --git a/packages.txt b/packages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e3b83b5d09790c768300606781624d0865a57bdb
--- /dev/null
+++ b/packages.txt
@@ -0,0 +1,98 @@
+bob/bob
+bob/bob.ap
+bob/bob.bio.base
+bob/bob.bio.caffe_face
+bob/bob.bio.face
+bob/bob.bio.gmm
+bob/bob.bio.spear
+bob/bob.bio.vein
+bob/bob.bio.video
+bob/bob.blitz
+bob/bob.buildout
+bob/bob.core
+bob/bob.db.arface
+bob/bob.db.asvspoof
+bob/bob.db.asvspoof2017
+bob/bob.db.atnt
+bob/bob.db.atvskeystroke
+bob/bob.db.avspoof
+bob/bob.db.banca
+bob/bob.db.base
+bob/bob.db.biosecure
+bob/bob.db.biosecurid.face
+bob/bob.db.casme2
+bob/bob.db.caspeal
+bob/bob.db.cbsr_nir_vis_2
+bob/bob.db.cohface
+bob/bob.db.cuhk_cufs
+bob/bob.db.cuhk_cufsf
+bob/bob.db.frgc
+bob/bob.db.fv3d
+bob/bob.db.gbu
+bob/bob.db.hci_tagging
+bob/bob.db.ijba
+bob/bob.db.ijbc
+bob/bob.db.iris
+bob/bob.db.kboc16
+bob/bob.db.lfw
+bob/bob.db.livdet2013
+bob/bob.db.maskattack
+bob/bob.db.mnist
+bob/bob.db.mobio
+bob/bob.db.msu_mfsd_mod
+bob/bob.db.multipie
+bob/bob.db.nist_sre12
+bob/bob.db.nivl
+bob/bob.db.oulunpu
+bob/bob.db.pericrosseye
+bob/bob.db.pola_thermal
+bob/bob.db.putvein
+bob/bob.db.replay
+bob/bob.db.replaymobile
+bob/bob.db.scface
+bob/bob.db.utfvp
+bob/bob.db.uvad
+bob/bob.db.verafinger
+bob/bob.db.voicepa
+bob/bob.db.voxforge
+bob/bob.db.wine
+bob/bob.db.xm2vts
+bob/bob.db.youtube
+bob/bob.db.fargo
+bob/bob.extension
+bob/bob.fusion.base
+bob/bob.io.audio
+bob/bob.io.base
+bob/bob.io.image
+bob/bob.io.matlab
+bob/bob.io.video
+bob/bob.ip.base
+bob/bob.ip.caffe_extractor
+bob/bob.ip.color
+bob/bob.ip.dlib
+bob/bob.ip.draw
+bob/bob.ip.facedetect
+bob/bob.ip.facelandmarks
+bob/bob.ip.flandmark
+bob/bob.ip.gabor
+bob/bob.ip.mtcnn
+bob/bob.ip.optflow.hornschunck
+bob/bob.ip.optflow.liu
+bob/bob.ip.qualitymeasure
+bob/bob.ip.skincolorfilter
+bob/bob.ip.tensorflow_extractor
+bob/bob.learn.activation
+bob/bob.learn.boosting
+bob/bob.learn.em
+bob/bob.learn.libsvm
+bob/bob.learn.linear
+bob/bob.learn.mlp
+bob/bob.math
+bob/bob.measure
+bob/bob.pad.base
+bob/bob.pad.face
+bob/bob.pad.vein
+bob/bob.pad.voice
+bob/bob.rppg.base
+bob/bob.sp
+bob/gridtk
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index e54de74e8fd0a0726eb63dfa79e293e592159c42..0000000000000000000000000000000000000000
--- a/requirements.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-bob
-bob.ap
-bob.bio.base
-bob.bio.caffe_face
-bob.bio.face
-bob.bio.gmm
-bob.bio.spear
-bob.bio.vein
-bob.bio.video
-bob.blitz
-bob.buildout
-bob.core
-bob.db.arface
-bob.db.asvspoof
-bob.db.asvspoof2017
-bob.db.atnt
-bob.db.atvskeystroke
-bob.db.avspoof
-bob.db.banca
-bob.db.base
-bob.db.biosecure
-bob.db.biosecurid.face
-bob.db.casme2
-bob.db.caspeal
-bob.db.cbsr_nir_vis_2
-bob.db.cohface
-bob.db.cuhk_cufs
-bob.db.cuhk_cufsf
-bob.db.frgc
-bob.db.fv3d
-bob.db.gbu
-bob.db.hci_tagging
-bob.db.ijba
-bob.db.ijbc
-bob.db.iris
-bob.db.kboc16
-bob.db.lfw
-bob.db.livdet2013
-bob.db.maskattack
-bob.db.mnist
-bob.db.mobio
-bob.db.msu_mfsd_mod
-bob.db.multipie
-bob.db.nist_sre12
-bob.db.nivl
-bob.db.oulunpu
-bob.db.pericrosseye
-bob.db.pola_thermal
-bob.db.putvein
-bob.db.replay
-bob.db.replaymobile
-bob.db.scface
-bob.db.utfvp
-bob.db.uvad
-bob.db.verafinger
-bob.db.voicepa
-bob.db.voxforge
-bob.db.wine
-bob.db.xm2vts
-bob.db.youtube
-bob.db.fargo
-bob.extension
-bob.fusion.base
-bob.io.audio
-bob.io.base
-bob.io.image
-bob.io.matlab
-bob.io.video
-bob.ip.base
-bob.ip.caffe_extractor
-bob.ip.color
-bob.ip.draw
-bob.ip.facedetect
-bob.ip.flandmark
-bob.ip.gabor
-bob.ip.mtcnn
-bob.ip.optflow.hornschunck
-bob.ip.optflow.liu
-bob.ip.qualitymeasure
-bob.ip.skincolorfilter
-bob.ip.tensorflow_extractor
-bob.learn.activation
-bob.learn.boosting
-bob.learn.em
-bob.learn.libsvm
-bob.learn.linear
-bob.learn.mlp
-bob.math
-bob.measure
-bob.pad.base
-bob.pad.face
-bob.pad.vein
-bob.pad.voice
-bob.rppg.base
-bob.sp
-gridtk