diff --git a/.gitignore b/.gitignore
index d1dfa18ce8c26f10ec4887002a30462ead44df74..f9eef345e861b1c90f0a27dc8d59d19fbb1656bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,7 +17,6 @@ dist
 build
 .DS_Store
 *.egg
-src/
 record.txt
 dask-worker-space
 .gitlab-ci-local*
diff --git a/bob/__init__.py b/src/bob/__init__.py
similarity index 100%
rename from bob/__init__.py
rename to src/bob/__init__.py
diff --git a/bob/learn/__init__.py b/src/bob/learn/__init__.py
similarity index 100%
rename from bob/learn/__init__.py
rename to src/bob/learn/__init__.py
diff --git a/bob/learn/em/__init__.py b/src/bob/learn/em/__init__.py
similarity index 100%
rename from bob/learn/em/__init__.py
rename to src/bob/learn/em/__init__.py
diff --git a/bob/learn/em/data/data.hdf5 b/src/bob/learn/em/data/data.hdf5
similarity index 100%
rename from bob/learn/em/data/data.hdf5
rename to src/bob/learn/em/data/data.hdf5
diff --git a/bob/learn/em/data/dataNormalized.hdf5 b/src/bob/learn/em/data/dataNormalized.hdf5
similarity index 100%
rename from bob/learn/em/data/dataNormalized.hdf5
rename to src/bob/learn/em/data/dataNormalized.hdf5
diff --git a/bob/learn/em/data/dataforMAP.hdf5 b/src/bob/learn/em/data/dataforMAP.hdf5
similarity index 100%
rename from bob/learn/em/data/dataforMAP.hdf5
rename to src/bob/learn/em/data/dataforMAP.hdf5
diff --git a/bob/learn/em/data/faithful.torch3.hdf5 b/src/bob/learn/em/data/faithful.torch3.hdf5
similarity index 100%
rename from bob/learn/em/data/faithful.torch3.hdf5
rename to src/bob/learn/em/data/faithful.torch3.hdf5
diff --git a/bob/learn/em/data/faithful.torch3_f64.hdf5 b/src/bob/learn/em/data/faithful.torch3_f64.hdf5
similarity index 100%
rename from bob/learn/em/data/faithful.torch3_f64.hdf5
rename to src/bob/learn/em/data/faithful.torch3_f64.hdf5
diff --git a/bob/learn/em/data/gmm.init_means.hdf5 b/src/bob/learn/em/data/gmm.init_means.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm.init_means.hdf5
rename to src/bob/learn/em/data/gmm.init_means.hdf5
diff --git a/bob/learn/em/data/gmm.init_variances.hdf5 b/src/bob/learn/em/data/gmm.init_variances.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm.init_variances.hdf5
rename to src/bob/learn/em/data/gmm.init_variances.hdf5
diff --git a/bob/learn/em/data/gmm.init_weights.hdf5 b/src/bob/learn/em/data/gmm.init_weights.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm.init_weights.hdf5
rename to src/bob/learn/em/data/gmm.init_weights.hdf5
diff --git a/bob/learn/em/data/gmm_MAP.hdf5 b/src/bob/learn/em/data/gmm_MAP.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm_MAP.hdf5
rename to src/bob/learn/em/data/gmm_MAP.hdf5
diff --git a/bob/learn/em/data/gmm_ML.hdf5 b/src/bob/learn/em/data/gmm_ML.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm_ML.hdf5
rename to src/bob/learn/em/data/gmm_ML.hdf5
diff --git a/bob/learn/em/data/gmm_ML_32bit_debug.hdf5 b/src/bob/learn/em/data/gmm_ML_32bit_debug.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm_ML_32bit_debug.hdf5
rename to src/bob/learn/em/data/gmm_ML_32bit_debug.hdf5
diff --git a/bob/learn/em/data/gmm_ML_32bit_release.hdf5 b/src/bob/learn/em/data/gmm_ML_32bit_release.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm_ML_32bit_release.hdf5
rename to src/bob/learn/em/data/gmm_ML_32bit_release.hdf5
diff --git a/bob/learn/em/data/ivector_fit_data.hdf5 b/src/bob/learn/em/data/ivector_fit_data.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_fit_data.hdf5
rename to src/bob/learn/em/data/ivector_fit_data.hdf5
diff --git a/bob/learn/em/data/ivector_gs1.hdf5 b/src/bob/learn/em/data/ivector_gs1.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_gs1.hdf5
rename to src/bob/learn/em/data/ivector_gs1.hdf5
diff --git a/bob/learn/em/data/ivector_gs2.hdf5 b/src/bob/learn/em/data/ivector_gs2.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_gs2.hdf5
rename to src/bob/learn/em/data/ivector_gs2.hdf5
diff --git a/bob/learn/em/data/ivector_ref_nosigma_step1.hdf5 b/src/bob/learn/em/data/ivector_ref_nosigma_step1.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_ref_nosigma_step1.hdf5
rename to src/bob/learn/em/data/ivector_ref_nosigma_step1.hdf5
diff --git a/bob/learn/em/data/ivector_ref_nosigma_step2.hdf5 b/src/bob/learn/em/data/ivector_ref_nosigma_step2.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_ref_nosigma_step2.hdf5
rename to src/bob/learn/em/data/ivector_ref_nosigma_step2.hdf5
diff --git a/bob/learn/em/data/ivector_ref_step1.hdf5 b/src/bob/learn/em/data/ivector_ref_step1.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_ref_step1.hdf5
rename to src/bob/learn/em/data/ivector_ref_step1.hdf5
diff --git a/bob/learn/em/data/ivector_ref_step2.hdf5 b/src/bob/learn/em/data/ivector_ref_step2.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_ref_step2.hdf5
rename to src/bob/learn/em/data/ivector_ref_step2.hdf5
diff --git a/bob/learn/em/data/ivector_results.hdf5 b/src/bob/learn/em/data/ivector_results.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_results.hdf5
rename to src/bob/learn/em/data/ivector_results.hdf5
diff --git a/bob/learn/em/data/ivector_test_data.hdf5 b/src/bob/learn/em/data/ivector_test_data.hdf5
similarity index 100%
rename from bob/learn/em/data/ivector_test_data.hdf5
rename to src/bob/learn/em/data/ivector_test_data.hdf5
diff --git a/bob/learn/em/data/means.hdf5 b/src/bob/learn/em/data/means.hdf5
similarity index 100%
rename from bob/learn/em/data/means.hdf5
rename to src/bob/learn/em/data/means.hdf5
diff --git a/bob/learn/em/data/meansAfterKMeans.hdf5 b/src/bob/learn/em/data/meansAfterKMeans.hdf5
similarity index 100%
rename from bob/learn/em/data/meansAfterKMeans.hdf5
rename to src/bob/learn/em/data/meansAfterKMeans.hdf5
diff --git a/bob/learn/em/data/meansAfterMAP.hdf5 b/src/bob/learn/em/data/meansAfterMAP.hdf5
similarity index 100%
rename from bob/learn/em/data/meansAfterMAP.hdf5
rename to src/bob/learn/em/data/meansAfterMAP.hdf5
diff --git a/bob/learn/em/data/meansAfterML.hdf5 b/src/bob/learn/em/data/meansAfterML.hdf5
similarity index 100%
rename from bob/learn/em/data/meansAfterML.hdf5
rename to src/bob/learn/em/data/meansAfterML.hdf5
diff --git a/bob/learn/em/data/new_adapted_mean.hdf5 b/src/bob/learn/em/data/new_adapted_mean.hdf5
similarity index 100%
rename from bob/learn/em/data/new_adapted_mean.hdf5
rename to src/bob/learn/em/data/new_adapted_mean.hdf5
diff --git a/bob/learn/em/data/samplesFrom2G_f64.hdf5 b/src/bob/learn/em/data/samplesFrom2G_f64.hdf5
similarity index 100%
rename from bob/learn/em/data/samplesFrom2G_f64.hdf5
rename to src/bob/learn/em/data/samplesFrom2G_f64.hdf5
diff --git a/bob/learn/em/data/stats.hdf5 b/src/bob/learn/em/data/stats.hdf5
similarity index 100%
rename from bob/learn/em/data/stats.hdf5
rename to src/bob/learn/em/data/stats.hdf5
diff --git a/bob/learn/em/data/variances.hdf5 b/src/bob/learn/em/data/variances.hdf5
similarity index 100%
rename from bob/learn/em/data/variances.hdf5
rename to src/bob/learn/em/data/variances.hdf5
diff --git a/bob/learn/em/data/variancesAfterKMeans.hdf5 b/src/bob/learn/em/data/variancesAfterKMeans.hdf5
similarity index 100%
rename from bob/learn/em/data/variancesAfterKMeans.hdf5
rename to src/bob/learn/em/data/variancesAfterKMeans.hdf5
diff --git a/bob/learn/em/data/variancesAfterMAP.hdf5 b/src/bob/learn/em/data/variancesAfterMAP.hdf5
similarity index 100%
rename from bob/learn/em/data/variancesAfterMAP.hdf5
rename to src/bob/learn/em/data/variancesAfterMAP.hdf5
diff --git a/bob/learn/em/data/variancesAfterML.hdf5 b/src/bob/learn/em/data/variancesAfterML.hdf5
similarity index 100%
rename from bob/learn/em/data/variancesAfterML.hdf5
rename to src/bob/learn/em/data/variancesAfterML.hdf5
diff --git a/bob/learn/em/data/weights.hdf5 b/src/bob/learn/em/data/weights.hdf5
similarity index 100%
rename from bob/learn/em/data/weights.hdf5
rename to src/bob/learn/em/data/weights.hdf5
diff --git a/bob/learn/em/data/weightsAfterKMeans.hdf5 b/src/bob/learn/em/data/weightsAfterKMeans.hdf5
similarity index 100%
rename from bob/learn/em/data/weightsAfterKMeans.hdf5
rename to src/bob/learn/em/data/weightsAfterKMeans.hdf5
diff --git a/bob/learn/em/data/weightsAfterMAP.hdf5 b/src/bob/learn/em/data/weightsAfterMAP.hdf5
similarity index 100%
rename from bob/learn/em/data/weightsAfterMAP.hdf5
rename to src/bob/learn/em/data/weightsAfterMAP.hdf5
diff --git a/bob/learn/em/data/weightsAfterML.hdf5 b/src/bob/learn/em/data/weightsAfterML.hdf5
similarity index 100%
rename from bob/learn/em/data/weightsAfterML.hdf5
rename to src/bob/learn/em/data/weightsAfterML.hdf5
diff --git a/bob/learn/em/data/ztnorm_eval_eval.hdf5 b/src/bob/learn/em/data/ztnorm_eval_eval.hdf5
similarity index 100%
rename from bob/learn/em/data/ztnorm_eval_eval.hdf5
rename to src/bob/learn/em/data/ztnorm_eval_eval.hdf5
diff --git a/bob/learn/em/data/ztnorm_eval_tnorm.hdf5 b/src/bob/learn/em/data/ztnorm_eval_tnorm.hdf5
similarity index 100%
rename from bob/learn/em/data/ztnorm_eval_tnorm.hdf5
rename to src/bob/learn/em/data/ztnorm_eval_tnorm.hdf5
diff --git a/bob/learn/em/data/ztnorm_result.hdf5 b/src/bob/learn/em/data/ztnorm_result.hdf5
similarity index 100%
rename from bob/learn/em/data/ztnorm_result.hdf5
rename to src/bob/learn/em/data/ztnorm_result.hdf5
diff --git a/bob/learn/em/data/ztnorm_znorm_eval.hdf5 b/src/bob/learn/em/data/ztnorm_znorm_eval.hdf5
similarity index 100%
rename from bob/learn/em/data/ztnorm_znorm_eval.hdf5
rename to src/bob/learn/em/data/ztnorm_znorm_eval.hdf5
diff --git a/bob/learn/em/data/ztnorm_znorm_tnorm.hdf5 b/src/bob/learn/em/data/ztnorm_znorm_tnorm.hdf5
similarity index 100%
rename from bob/learn/em/data/ztnorm_znorm_tnorm.hdf5
rename to src/bob/learn/em/data/ztnorm_znorm_tnorm.hdf5
diff --git a/bob/learn/em/factor_analysis.py b/src/bob/learn/em/factor_analysis.py
similarity index 100%
rename from bob/learn/em/factor_analysis.py
rename to src/bob/learn/em/factor_analysis.py
diff --git a/bob/learn/em/gmm.py b/src/bob/learn/em/gmm.py
similarity index 100%
rename from bob/learn/em/gmm.py
rename to src/bob/learn/em/gmm.py
diff --git a/bob/learn/em/ivector.py b/src/bob/learn/em/ivector.py
similarity index 100%
rename from bob/learn/em/ivector.py
rename to src/bob/learn/em/ivector.py
diff --git a/bob/learn/em/kmeans.py b/src/bob/learn/em/kmeans.py
similarity index 100%
rename from bob/learn/em/kmeans.py
rename to src/bob/learn/em/kmeans.py
diff --git a/bob/learn/em/linear_scoring.py b/src/bob/learn/em/linear_scoring.py
similarity index 100%
rename from bob/learn/em/linear_scoring.py
rename to src/bob/learn/em/linear_scoring.py
diff --git a/bob/learn/em/utils.py b/src/bob/learn/em/utils.py
similarity index 100%
rename from bob/learn/em/utils.py
rename to src/bob/learn/em/utils.py
diff --git a/bob/learn/em/wccn.py b/src/bob/learn/em/wccn.py
similarity index 100%
rename from bob/learn/em/wccn.py
rename to src/bob/learn/em/wccn.py
diff --git a/bob/learn/em/whitening.py b/src/bob/learn/em/whitening.py
similarity index 100%
rename from bob/learn/em/whitening.py
rename to src/bob/learn/em/whitening.py
diff --git a/bob/learn/em/test/__init__.py b/tests/__init__.py
similarity index 100%
rename from bob/learn/em/test/__init__.py
rename to tests/__init__.py
diff --git a/bob/learn/em/data/gmm_ML_fitted.hdf5 b/tests/data/gmm_ML_fitted.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm_ML_fitted.hdf5
rename to tests/data/gmm_ML_fitted.hdf5
diff --git a/bob/learn/em/data/gmm_ML_legacy.hdf5 b/tests/data/gmm_ML_legacy.hdf5
similarity index 100%
rename from bob/learn/em/data/gmm_ML_legacy.hdf5
rename to tests/data/gmm_ML_legacy.hdf5
diff --git a/bob/learn/em/test/test_factor_analysis.py b/tests/test_factor_analysis.py
similarity index 100%
rename from bob/learn/em/test/test_factor_analysis.py
rename to tests/test_factor_analysis.py
diff --git a/bob/learn/em/test/test_gmm.py b/tests/test_gmm.py
similarity index 100%
rename from bob/learn/em/test/test_gmm.py
rename to tests/test_gmm.py
diff --git a/bob/learn/em/test/test_ivector.py b/tests/test_ivector.py
similarity index 100%
rename from bob/learn/em/test/test_ivector.py
rename to tests/test_ivector.py
diff --git a/bob/learn/em/test/test_kmeans.py b/tests/test_kmeans.py
similarity index 100%
rename from bob/learn/em/test/test_kmeans.py
rename to tests/test_kmeans.py
diff --git a/bob/learn/em/test/test_linear.py b/tests/test_linear.py
similarity index 100%
rename from bob/learn/em/test/test_linear.py
rename to tests/test_linear.py
diff --git a/bob/learn/em/test/test_linearscoring.py b/tests/test_linearscoring.py
similarity index 100%
rename from bob/learn/em/test/test_linearscoring.py
rename to tests/test_linearscoring.py
diff --git a/bob/learn/em/test/test_picklability.py b/tests/test_picklability.py
similarity index 100%
rename from bob/learn/em/test/test_picklability.py
rename to tests/test_picklability.py