diff --git a/release/changelog_since_last_release.txt b/release/changelog_since_last_release.txt
index d1dccc9b7e9882b6b03f5ac3d8e2d5f7d62d4ca6..2074c836026ae1f09551292422185fd26ea5e31e 100644
--- a/release/changelog_since_last_release.txt
+++ b/release/changelog_since_last_release.txt
@@ -1,16 +1,15 @@
 * bob.buildout
   * v2.1.3 (Sep 22, 2017 10:37)
-	   * port to new CI/CD
+     * port to new CI/CD
   * v2.1.4 (Sep 22, 2017 11:34)
-	   * port to new CI/CD
+     * port to new CI/CD
   * v2.1.5 (Sep 22, 2017 13:58)
      * no signficant changes
   * v2.1.6 (Feb 27, 2018 16:29)
      * Enables built-in conda packaging
      * Provides user/development guides
      * Provides an alternative for gdb (based on lldb) for MacOS
-		 * Improve handling of environments for Python 3.6 (issue #24)
-  * rebuild
+     * Improve handling of environments for Python 3.6 (issue #24)
 * bob.extension
   * major
      * Big changes to the documentation of this package: divided guide in
@@ -29,7 +28,7 @@
        having a more comprehensive use of "-isystem"
      * Improvements to our internal search-path functionality for building
        other packages
-		 * Ported to new CI/CD
+     * Ported to new CI/CD
 * bob.blitz
   * minor
      * Migrate to conda based CI
@@ -76,34 +75,22 @@
      - recompute far values in roc_for_far
      - Fix the test values
 * bob.io.image
-  *patch
-     - Fixed issue with PGM image load when such images have extra bytes (https://gitlab.idiap.ch/bob/bob.io.image/merge_requests/36).
   * minor
-     - Migrate to conda based CI
+     * Fixed issue with PGM image load when such images have extra bytes, see bob.io.image!36
+     * Migrate to conda based CI
 * bob.db.base
-  * patch
-     - Implemented local file upload, cf. bob.db.base#20
-     - Remove traces of internal server from file; By default, do local dir dump; Use…
-     - Fixed spacing in print statements
-     - Password is only required for upload to server
-     - Catch specific exceptions from shutil; Remove getpass stuff
-     - Now everything works ;-)
-     - Fix deprecations and super usage
-     - Add json annotation format support
-     - Call the init of super class in File
-     - Do not break when some of bob.db entrypoints are broken
-     - Migrate to conda based CI
-     - not all databases have original_directory and original_extension
-     - Annotations could be None
+  * major
+     * Migrate to conda based CI
+     * Implemented local file upload bob.db.base#20
+     * Added support for JSON annotation format
+     * Unified use of `original_directory` and `original_extension`
+     * Minor improvements
 * bob.io.video
   * minor
      * Migrate to conda based CI
-     - adjust test values to openh264
-     - increase acceptable noise
-     - adjust test values
-     - Revamped code for ffmpeg-3.1+ baseline
-     - Fixed readout; No more warnings
-     - Fixes bob.io.video#10
+     * adjust test values to openh264
+     * Revamped code for ffmpeg-3.1+ s
+     * Fixes bob.io.video#10
 * bob.io.matlab
   * minor
      * Migrate to conda based CI
@@ -209,24 +196,10 @@
      * Migrate to conda based CI
 * bob.ip.dlib
   * v1.0.2 (Oct 19, 2017 10:18)
-     * Fixed issue with possible negative coordinates
-     - Fix for the empty image issue - when image is an array of zeros
-     - Fixed possible negative coordinates in face bbx retirned by FaceDetector
-     - Added the unit test for negative coordinates case
+     * Fixed issue with possible negative coordinates and empty image
   * patch
-     - Worked in the documentation
-     - [conda] Added conda recipe
-     - [conda] Trying to fix dlib dependency
-     - [conda] Added opencv as dependency
-     - update tests to dlib 19.7
-     - adding develop config
-     - fixing documentation to dlib 19.7
-     - [conda] Removed Bob deps from requirements/run and added Jinja variables for opencv and dlib
-     - Fix conda recipe
-     - Bump into beta version (closes bob.ip.dlib#4)
-     - Fixed the index.rst to match joint docs requirements
-     - Removed some spaces in index.rst
-     - [conda] Downgrading to the version 1.0.3b0 in order to fix conda issue.
+     * Migrate to conda based CI
+     * Improved documentation and tests
 * bob.db.arface
   * v2.1.4 (Sep 22, 2017 14:17)
   * minor
@@ -234,20 +207,22 @@
 * bob.db.asvspoof
   * v1.0.3 (Sep 22, 2017 14:20)
   * minor
-     - added conda recipe and removed redundant debug_asvspoof2017 script
+     * Migrate to conda based CI
+     * Removed redundant debug_asvspoof2017 script
 * bob.db.asvspoof2017
   * v1.0.3 (Sep 22, 2017 14:20)
   * minor
-     - added conda recipe and removed redundant debug_asvspoof2017 script
+     * Migrate to conda based CI
+     * Removed redundant debug_asvspoof2017 script
 * bob.db.atvskeystroke
   * v2.1.5 (Sep 22, 2017 14:21)
-  * patch
-     - Port to new CI
-     - Fix build deps
-     - Add a ref to the package name
-     - Add missing whitespace
+  * minor
+     * Migrate to conda based CI
 * bob.db.avspoof
-  * patch
+  * v2.2.8 (Sep 22, 2017 14:22)
+  * minor
+     * Migrate to conda based CI
+     * Removed redundant debug_avspoof.py script
 * bob.db.banca
   * v2.1.5 (Sep 22, 2017 14:22)
   * minor
@@ -260,7 +235,6 @@
   * v2.1.8 (Sep 22, 2017 14:22)
   * minor
      * Migrate to conda based CI
-     - Update index.rst
 * bob.db.casme2
   * v2.1.5 (Sep 22, 2017 14:23)
   * minor
@@ -530,15 +504,10 @@
      * bob.bio.gmm!9 Use generators instead of list to concatenate the loaded training data
      * bob.bio.gmm!12 Doc fixes
      * bob.bio.gmm!11 Python36 & docs fixes
-     - Adeded an author for the package
-  * patch
-     - Propagated --allow-missing-files to the UBM training
-     - Removed some garbage code
-     - Fixing issue bob.bio.gmm#22. Removing the keyword argument allow_missing_files. don't ask…
-     - Migrate to conda based CI
-     - [conda] Appended the test requirements to meta.yaml
-     - Fixed the index.rst to match joint docs requirements
-     - Fix the index levels
+  * minor
+     * Migrate to conda based CI
+     * Propagated --allow-missing-files to the UBM training
+     * Fixed issue bob.bio.gmm#22
 * bob.bio.face
   * patch
      - First commit
@@ -606,11 +575,10 @@
 * bob.bio.spear
   * v3.1.1 (Sep 22, 2017 14:48)
      * bob.bio.spear!36 Docs url fixes
-     - reverted patch version
-  * patch
-     - pass kwargs in the base file class
-     - Migrate to conda based CI
-     - [sphinx] Fixed sphinx doc
+  * minor
+     * pass kwargs in the base file class
+     * Migrate to conda based CI
+     * Improved docs
 * bob.bio.video
   * v3.3.0 (Sep 22, 2017 13:41)
      * bob.bio.video!20 Docs url fix
@@ -661,65 +629,21 @@
      * Adaptations to allow vulnerability analysis
 * bob.db.voxforge
   * v2.2.0 (Sep 24, 2017 11:39)
-  * patch
-     - Remove unnecessary extra-intersphinx.txt
-     - Update README.rst
-     - Update index.rst
-     - Migrate to conda based CI
-     - [ci] Removed bob_dbmanage download
+  * minor
+     * Migrate to conda based CI
+     * Improved docs
+     * Removed bob_dbmanage download
 * bob.pad.base
-  * patch
-     - allow missing files projector
-     - allow missing files projector
-     - allow missing files scoring
-     - allow missing files scoring
-     - allow missing files scoring
-     - Don't rebuild bob.bio.base documentation here. Point to it instead
-     - Do not use pretty prininting with kwargs
-     - Use super
-     - inherit from object
-     - Add an option to return a flat list
-     - Add tests for flat=True
-     - Fix the sphinx warnings
-     - Fix sphinx warnings
-     - filelist-based db for bio and pad exper. Added docs
-     * Migrate to conda based CI
-     - Add padfile to label. Useful for deeplearning
-     - moved SVM algorithm from bob.pad.face
-     - moved SVM algorithm from bob.pad.face
-     - make tests passing
-     - Moved one class GMM from bob.pad.face
-     - Moved LR algo from bob.pad.face
-     - wrong name for scikit-learn package
-     - small correction of imports
-     - Moved SVM Cascade from bob.pad.face
-     - adding missing bob.learn.linear
-     - fixing builds
-     - Fixed the index.rst to match joint docs requirements
-     - Removed some spaces in index.rst
-     - Replace the old pad iso metrics class with a script
-     - improve logging message of projection training
-     - Added missing indirect dependencies
-     - improve requirements.txt and develop.cfg
-     - Update meta.yaml
-     - Update meta.yaml
-     - Update requirements.txt
-     - score computation is not a parallel job
-     - Allow for missing files in the projection step
-     - raise runtimeerror exception instead
-     - [helper] corrected one of the convert frames ...  function to work with numpy arrays
-     - [SVM] made return score working for 1d
-     - [test] added test for helper functions converting array to FrameContainer and vice versa
-     - [test] corrected the np vs numpy in the test from frame container to array
-     - [test] another correction to test if array is numpy.array
-     - [test] yet another correction (previous one was sloppy) to test if array is numpy.array
-     - [test] test if array is numpy.ndarray and not numpy.array ...
-     - [utils] corrected an indentation error causing troubles during conversion…
-     - [doc] fixed some references
-     - added clients option to filelistdb driver
-     - Avoids feature blow-up when std==0.
-     - Fixed convert_frame_cont_to_array addressing missing annotations
-     - Add a predictions algorithm useful for deeplearning
+  * major
+     * Migrate to conda based CI
+     * Added --allow-missing-files option
+     * Improved documentation
+     * Moved from bob.pad.face SVM (bob implementation), one class GMM (scikit-learn) and logistic regression (scikit-learn) algorithms   
+     * Cleaned up and improved code. Added tests.
+     * Replace the old PAD ISO metrics class with a script
+     * Added clients option to FileListDB driver
+     * Avoids feature blow-up when std==0.
+     * Added predictions algorithm and padfile to label. 
 * bob.pad.face
   * major
      * Added High Level Database Interface (HLDI) for MIFS database
diff --git a/release/generate_changelog.py b/release/generate_changelog.py
index 4bf779af55f389d55c50b60f55e300e5d793f5e6..6fc5cbf38c2bf7decb6a89982845aa609fb562c1 100755
--- a/release/generate_changelog.py
+++ b/release/generate_changelog.py
@@ -24,6 +24,15 @@ import gitlab
 import datetime
 
 
+def _insure_correct_package(candidates, group_name, pkg_name):
+    pkg = None
+    for pkg in candidates:
+        # make sure the name and the group name match exactly
+        if pkg.name == pkg_name and pkg.namespace['name'] == group_name:
+            return pkg
+    raise ValueError('Package "{0}" was not found inside group "{1}"'.format(pkg_name, group_name))
+
+
 def get_packages_list(gl, gl_group=None):
     if gl_group:
         grp_nightlies = gl_group.projects.list(search='bob.nightlies')[0]
@@ -145,7 +154,8 @@ def print_tags_with_commits(pkg_name, gitpkg, since='2017-01-01T00:00:00Z'):
 
 def main(private_token, pkg_name=""):
     gl = gitlab.Gitlab('https://gitlab.idiap.ch', private_token=private_token, api_version=4)
-    bob_group = gl.groups.list(search='bob')[0]
+    group_name = 'bob'
+    bob_group = gl.groups.list(search=group_name)[0]
     #    print(pkg_list_ordered)
     last_release_date = bob_last_release(gl)
     #    print(last_release_date)
@@ -153,15 +163,17 @@ def main(private_token, pkg_name=""):
 #    import ipdb; ipdb.set_trace()
     if pkg_name:
         # group returns a simplified description of the project
-        grpkg = bob_group.projects.list(search=pkg_name)[0]
+        grpkg = _insure_correct_package(bob_group.projects.list(search=pkg_name), group_name, pkg_name)
         # so, we need to retrieve the full info from GitLab using correct project id
         gitpkg = gl.projects.get(id=grpkg.id)
         print_tags_with_commits(pkg_name, gitpkg, since=last_release_date)
     else:
         pkg_list_ordered = get_packages_list(gl, gl_group=bob_group)
         for pkg_name in pkg_list_ordered:
+            if pkg_name == group_name:  # skip bob meta-package
+                continue
             # group returns a simplified description of the project
-            grpkg = bob_group.projects.list(search=pkg_name)[0]
+            grpkg = _insure_correct_package(bob_group.projects.list(search=pkg_name), group_name, pkg_name)
             # so, we need to retrieve the full info from GitLab using correct project id
             gitpkg = gl.projects.get(id=grpkg.id)
             #        print_tags(pkg_name, gitpkg, since=last_release_date))