From 76ba2dbdfeb00c357b9cb0884c058a49b6ba3246 Mon Sep 17 00:00:00 2001
From: Tiago Freitas Pereira <tiagofrepereira@gmail.com>
Date: Thu, 21 Apr 2022 17:00:00 +0200
Subject: [PATCH] Deprecation move. ported image and new hdf5 support

---
 bob/io/__init__.py                            |    1 +
 bob/io/base/__init__.py                       |  799 +++---
 bob/io/base/bobskin.cpp                       |  159 --
 bob/io/base/bobskin.h                         |   91 -
 bob/io/base/codec.cpp                         |   48 -
 bob/io/base/cpp/CodecRegistry.cpp             |   98 -
 bob/io/base/cpp/File.cpp                      |   10 -
 bob/io/base/cpp/HDF5ArrayFile.cpp             |  222 --
 bob/io/base/cpp/HDF5Attribute.cpp             |  243 --
 bob/io/base/cpp/HDF5Dataset.cpp               |  612 -----
 bob/io/base/cpp/HDF5File.cpp                  |  294 ---
 bob/io/base/cpp/HDF5Group.cpp                 |  560 -----
 bob/io/base/cpp/HDF5Types.cpp                 |  866 -------
 bob/io/base/cpp/HDF5Utils.cpp                 |  157 --
 bob/io/base/cpp/array.cpp                     |  134 --
 bob/io/base/cpp/array_type.cpp                |  126 -
 bob/io/base/cpp/blitz_array.cpp               |  166 --
 bob/io/base/cpp/reorder.cpp                   |  288 ---
 bob/io/base/cpp/utils.cpp                     |   30 -
 bob/io/base/file.cpp                          |  603 -----
 bob/io/base/hdf5.cpp                          | 2137 -----------------
 .../base/include/bob.io.base/CodecRegistry.h  |   81 -
 bob/io/base/include/bob.io.base/File.h        |  184 --
 .../base/include/bob.io.base/HDF5Attribute.h  |   87 -
 bob/io/base/include/bob.io.base/HDF5Dataset.h |  536 -----
 bob/io/base/include/bob.io.base/HDF5File.h    |  558 -----
 bob/io/base/include/bob.io.base/HDF5Group.h   |  468 ----
 bob/io/base/include/bob.io.base/HDF5Types.h   |  508 ----
 bob/io/base/include/bob.io.base/HDF5Utils.h   |  135 --
 bob/io/base/include/bob.io.base/api.h         |  304 ---
 bob/io/base/include/bob.io.base/array.h       |  255 --
 bob/io/base/include/bob.io.base/array_type.h  |  162 --
 bob/io/base/include/bob.io.base/array_utils.h |  133 -
 bob/io/base/include/bob.io.base/blitz_array.h |  261 --
 bob/io/base/include/bob.io.base/config.h      |   47 -
 bob/io/base/include/bob.io.base/reorder.h     |   94 -
 bob/io/base/include/bob.io.base/utils.h       |  105 -
 bob/io/base/main.cpp                          |  177 --
 bob/io/base/test.cpp                          |  103 -
 bob/io/base/test/__init__.py                  |    0
 bob/io/base/test/data/cmyk.jpg                |  Bin 0 -> 255 bytes
 bob/io/base/test/data/grace_hopper.png        |  Bin 0 -> 628280 bytes
 bob/io/base/test/data/img_gray_alpha.png      |  Bin 0 -> 644 bytes
 bob/io/base/test/data/img_indexed_color.png   |  Bin 0 -> 1087 bytes
 .../test/data/img_indexed_color_alpha.png     |  Bin 0 -> 574 bytes
 bob/io/base/test/data/img_rgba_color.png      |  Bin 0 -> 761 bytes
 bob/io/base/test/data/img_trns.png            |  Bin 0 -> 360 bytes
 bob/io/base/{ => test}/data/matlab_1d.hdf5    |  Bin
 bob/io/base/{ => test}/data/matlab_2d.hdf5    |  Bin
 bob/io/base/test/data/test.gif                |  Bin 0 -> 151 bytes
 bob/io/base/test/data/test.jpg                |  Bin 0 -> 216 bytes
 bob/io/base/test/data/test.pbm                |    3 +
 bob/io/base/test/data/test.pgm                |  Bin 0 -> 35 bytes
 bob/io/base/test/data/test.ppm                |  Bin 0 -> 83 bytes
 bob/io/base/{ => test}/data/test1.hdf5        |  Bin
 .../base/{ => test}/data/test7_unlimited.hdf5 |  Bin
 bob/io/base/test/data/test_2.pgm              |  Bin 0 -> 61 bytes
 bob/io/base/test/data/test_2.ppm              |  Bin 0 -> 157 bytes
 .../base/{ => test}/data/test_array_codec.txt |    0
 bob/io/base/test/data/test_corrupted.pbm      |    3 +
 bob/io/base/test/data/test_corrupted.pgm      |  Bin 0 -> 37 bytes
 bob/io/base/test/data/test_corrupted.ppm      |  Bin 0 -> 85 bytes
 bob/io/base/test/data/test_spaces.pgm         |    6 +
 bob/io/base/test/test_hdf5.py                 |   55 +
 bob/io/base/test/test_image_support.py        |  152 ++
 bob/io/base/test/test_io.py                   |   96 +
 bob/io/base/{ => test}/test_utils.py          |    0
 bob/io/base/test_cpp.py                       |   11 -
 bob/io/base/test_file.py                      |  232 --
 bob/io/base/test_hdf5.py                      |  546 -----
 bob/io/base/test_io.py                        |   96 -
 bob/io/base/utils.py                          |  126 +
 bob/io/base/version.cpp                       |   81 -
 conda/meta.yaml                               |   13 +-
 doc/c_cpp_api.rst                             |  168 --
 doc/extra-intersphinx.txt                     |    3 +-
 doc/guide.rst                                 |  382 ---
 doc/index.rst                                 |   10 +-
 doc/nitpick-exceptions.txt                    |   31 -
 doc/py_api.rst                                |   32 -
 requirements.txt                              |    2 -
 setup.py                                      |  237 +-
 82 files changed, 838 insertions(+), 13289 deletions(-)
 delete mode 100644 bob/io/base/bobskin.cpp
 delete mode 100644 bob/io/base/bobskin.h
 delete mode 100644 bob/io/base/codec.cpp
 delete mode 100644 bob/io/base/cpp/CodecRegistry.cpp
 delete mode 100644 bob/io/base/cpp/File.cpp
 delete mode 100644 bob/io/base/cpp/HDF5ArrayFile.cpp
 delete mode 100644 bob/io/base/cpp/HDF5Attribute.cpp
 delete mode 100644 bob/io/base/cpp/HDF5Dataset.cpp
 delete mode 100644 bob/io/base/cpp/HDF5File.cpp
 delete mode 100644 bob/io/base/cpp/HDF5Group.cpp
 delete mode 100644 bob/io/base/cpp/HDF5Types.cpp
 delete mode 100644 bob/io/base/cpp/HDF5Utils.cpp
 delete mode 100644 bob/io/base/cpp/array.cpp
 delete mode 100644 bob/io/base/cpp/array_type.cpp
 delete mode 100644 bob/io/base/cpp/blitz_array.cpp
 delete mode 100644 bob/io/base/cpp/reorder.cpp
 delete mode 100644 bob/io/base/cpp/utils.cpp
 delete mode 100644 bob/io/base/file.cpp
 delete mode 100644 bob/io/base/hdf5.cpp
 delete mode 100644 bob/io/base/include/bob.io.base/CodecRegistry.h
 delete mode 100644 bob/io/base/include/bob.io.base/File.h
 delete mode 100644 bob/io/base/include/bob.io.base/HDF5Attribute.h
 delete mode 100644 bob/io/base/include/bob.io.base/HDF5Dataset.h
 delete mode 100644 bob/io/base/include/bob.io.base/HDF5File.h
 delete mode 100644 bob/io/base/include/bob.io.base/HDF5Group.h
 delete mode 100644 bob/io/base/include/bob.io.base/HDF5Types.h
 delete mode 100644 bob/io/base/include/bob.io.base/HDF5Utils.h
 delete mode 100644 bob/io/base/include/bob.io.base/api.h
 delete mode 100644 bob/io/base/include/bob.io.base/array.h
 delete mode 100644 bob/io/base/include/bob.io.base/array_type.h
 delete mode 100644 bob/io/base/include/bob.io.base/array_utils.h
 delete mode 100644 bob/io/base/include/bob.io.base/blitz_array.h
 delete mode 100644 bob/io/base/include/bob.io.base/config.h
 delete mode 100644 bob/io/base/include/bob.io.base/reorder.h
 delete mode 100644 bob/io/base/include/bob.io.base/utils.h
 delete mode 100644 bob/io/base/main.cpp
 delete mode 100644 bob/io/base/test.cpp
 create mode 100644 bob/io/base/test/__init__.py
 create mode 100644 bob/io/base/test/data/cmyk.jpg
 create mode 100644 bob/io/base/test/data/grace_hopper.png
 create mode 100644 bob/io/base/test/data/img_gray_alpha.png
 create mode 100644 bob/io/base/test/data/img_indexed_color.png
 create mode 100644 bob/io/base/test/data/img_indexed_color_alpha.png
 create mode 100644 bob/io/base/test/data/img_rgba_color.png
 create mode 100644 bob/io/base/test/data/img_trns.png
 rename bob/io/base/{ => test}/data/matlab_1d.hdf5 (100%)
 rename bob/io/base/{ => test}/data/matlab_2d.hdf5 (100%)
 create mode 100644 bob/io/base/test/data/test.gif
 create mode 100644 bob/io/base/test/data/test.jpg
 create mode 100644 bob/io/base/test/data/test.pbm
 create mode 100644 bob/io/base/test/data/test.pgm
 create mode 100644 bob/io/base/test/data/test.ppm
 rename bob/io/base/{ => test}/data/test1.hdf5 (100%)
 rename bob/io/base/{ => test}/data/test7_unlimited.hdf5 (100%)
 create mode 100644 bob/io/base/test/data/test_2.pgm
 create mode 100644 bob/io/base/test/data/test_2.ppm
 rename bob/io/base/{ => test}/data/test_array_codec.txt (100%)
 create mode 100644 bob/io/base/test/data/test_corrupted.pbm
 create mode 100644 bob/io/base/test/data/test_corrupted.pgm
 create mode 100644 bob/io/base/test/data/test_corrupted.ppm
 create mode 100644 bob/io/base/test/data/test_spaces.pgm
 create mode 100644 bob/io/base/test/test_hdf5.py
 create mode 100644 bob/io/base/test/test_image_support.py
 create mode 100644 bob/io/base/test/test_io.py
 rename bob/io/base/{ => test}/test_utils.py (100%)
 delete mode 100644 bob/io/base/test_cpp.py
 delete mode 100644 bob/io/base/test_file.py
 delete mode 100644 bob/io/base/test_hdf5.py
 delete mode 100644 bob/io/base/test_io.py
 create mode 100644 bob/io/base/utils.py
 delete mode 100644 bob/io/base/version.cpp
 delete mode 100644 doc/c_cpp_api.rst
 delete mode 100644 doc/guide.rst

diff --git a/bob/io/__init__.py b/bob/io/__init__.py
index 2ab1e28..edbb409 100644
--- a/bob/io/__init__.py
+++ b/bob/io/__init__.py
@@ -1,3 +1,4 @@
 # see https://docs.python.org/3/library/pkgutil.html
 from pkgutil import extend_path
+
 __path__ = extend_path(__path__, __name__)
diff --git a/bob/io/base/__init__.py b/bob/io/base/__init__.py
index dbe34b9..a32b341 100644
--- a/bob/io/base/__init__.py
+++ b/bob/io/base/__init__.py
@@ -1,512 +1,431 @@
 # import Libraries of other lib packages
-import numpy
-import bob.core
+import numpy as np
+import h5py
+from pygments import format
+import imageio
+import cv2
+from PIL import Image
+from .utils import to_bob
 
-# import our own Library
-import bob.extension
-bob.extension.load_bob_library('bob.io.base', __file__)
-
-from ._library import File as _File_C, HDF5File as _HDF5File_C, extensions
-from . import version
-from .version import module as __version__
-from .version import api as __api_version__
 
 import os
 
 
-class File(_File_C):
-  __doc__ = _File_C.__doc__
-
-  def __enter__(self):
-    return self
-
-  def __exit__(self, type, value, traceback):
-    self.close()
-
-
-class HDF5File(_HDF5File_C):
-  __doc__ = _HDF5File_C.__doc__
-
-  def __enter__(self):
-    return self
-
-  def __exit__(self, type, value, traceback):
-    return self.close()
-
-  def __contains__(self, x):
-    __doc__ = self.has_key.__doc__
-    return self.has_key(x)
-
-  def __iter__(self):
-    __doc__ = self.keys.__doc__
-    return iter(self.keys())
-
-  def __getitem__(self, name):
-    __doc__ = self.get.__doc__
-    return self.get(name)
-
-  def __setitem__(self, name, value):
-    __doc__ = self.set.__doc__
-    return self.set(name, value)
-
-  def values(self):
-    '''Yields the datasets contained in the current directory.
-
-    Yields
-    -------
-    object
-        The datasets that are being read.
-    '''
-    return (self[key] for key in self)
-
-  def items(self):
-    '''Yields the keys and the datasets contained in the current directory.
-
-    Yields
-    -------
-    tuple
-        The key and the datasets that are being read in a tuple.
-    '''
-    return ((key, self[key]) for key in self)
+hdf5_extensions = [".hdf5", ".h5", ".hdf", ".hdf5", ".h5", ".hdf", ".hdf5"]
+image_extensions = [
+    ".jpg",
+    ".jpeg",
+    ".png",
+    ".bmp",
+    ".gif",
+    ".tif",
+    ".tiff",
+    ".pgm",
+    ".pbm",
+    ".pnm",
+    ".ppm",
+]
 
 
 def _is_string(s):
-  """Returns ``True`` if the given object is a string
+    """Returns ``True`` if the given object is a string
 
-  This method can be used with Python-2.x or 3.x and returns a string
-  respecting each environment's constraints.
-  """
+    This method can be used with Python-2.x or 3.x and returns a string
+    respecting each environment's constraints.
+    """
 
-  from sys import version_info
+    from sys import version_info
 
-  return (version_info[0] < 3 and isinstance(s, (str, unicode))) or \
-      isinstance(s, (bytes, str))
+    return (version_info[0] < 3 and isinstance(s, (str, unicode))) or isinstance(
+        s, (bytes, str)
+    )
 
 
-@numpy.deprecate(new_name="os.makedirs(directory, exist_ok=True)")
+@np.deprecate(new_name="os.makedirs(directory, exist_ok=True)")
 def create_directories_safe(directory, dryrun=False):
-  """Creates a directory if it does not exists, with concurrent access support.
-  This function will also create any parent directories that might be required.
-  If the dryrun option is selected, it does not actually create the directory,
-  but just writes the (Linux) command that would have been executed.
-
-  **Parameters:**
-
-  ``directory`` : str
-    The directory that you want to create.
-
-  ``dryrun`` : bool
-    Only ``print`` the command to console, but do not execute it.
-  """
-  if dryrun:
-    print("[dry-run] mkdir -p '%s'" % directory)
-  else:
-    os.makedirs(directory, exist_ok=True)
-
-
-def load(inputs):
-  """load(inputs) -> data
-
-  Loads the contents of a file, an iterable of files, or an iterable of
-  :py:class:`bob.io.base.File`'s into a :py:class:`numpy.ndarray`.
-
-  **Parameters:**
-
-  ``inputs`` : various types
-
-    This might represent several different entities:
-
-    1. The name of a file (full path) from where to load the data. In this
-       case, this assumes that the file contains an array and returns a loaded
-       numpy ndarray.
-    2. An iterable of filenames to be loaded in memory. In this case, this
-       would assume that each file contains a single 1D sample or a set of 1D
-       samples, load them in memory and concatenate them into a single and
-       returned 2D :py:class:`numpy.ndarray`.
-    3. An iterable of :py:class:`File`. In this case, this would assume
-       that each :py:class:`File` contains a single 1D sample or a set
-       of 1D samples, load them in memory if required and concatenate them into
-       a single and returned 2D :py:class:`numpy.ndarray`.
-    4. An iterable with mixed filenames and :py:class:`File`. In this
-       case, this would returned a 2D :py:class:`numpy.ndarray`, as described
-       by points 2 and 3 above.
-
-  **Returns:**
-
-  ``data`` : :py:class:`numpy.ndarray`
-    The data loaded from the given ``inputs``.
-  """
-
-  from collections.abc import Iterable
-  import numpy
-  if _is_string(inputs):
-    if not os.path.exists(inputs):
-      raise RuntimeError(f"`{inputs}' does not exist!")
-    return File(inputs, 'r').read()
-  elif isinstance(inputs, Iterable):
-    retval = []
-    for obj in inputs:
-      if _is_string(obj):
-        retval.append(load(obj))
-      elif isinstance(obj, File):
-        retval.append(obj.read())
-      else:
-        raise TypeError(
-            "Iterable contains an object which is not a filename nor a "
-            "bob.io.base.File.")
-    return numpy.vstack(retval)
-  else:
-    raise TypeError(
-        "Unexpected input object. This function is expecting a filename, "
-        "or an iterable of filenames and/or bob.io.base.File's")
-
-
-def merge(filenames):
-  """merge(filenames) -> files
+    """Creates a directory if it does not exists, with concurrent access support.
+    This function will also create any parent directories that might be required.
+    If the dryrun option is selected, it does not actually create the directory,
+    but just writes the (Linux) command that would have been executed.
 
-  Converts an iterable of filenames into an iterable over read-only
-  :py:class:`bob.io.base.File`'s.
+    **Parameters:**
 
-  **Parameters:**
+    ``directory`` : str
+      The directory that you want to create.
 
-  ``filenames`` : str or [str]
-
-    A list of file names.
-    This might represent:
-
-    1. A single filename. In this case, an iterable with a single
-       :py:class:`File` is returned.
-    2. An iterable of filenames to be converted into an iterable of
-       :py:class:`File`'s.
-
-  **Returns:**
+    ``dryrun`` : bool
+      Only ``print`` the command to console, but do not execute it.
+    """
+    if dryrun:
+        print("[dry-run] mkdir -p '%s'" % directory)
+    else:
+        os.makedirs(directory, exist_ok=True)
 
-  ``files`` : [:py:class:`File`]
-    The list of files.
-  """
 
-  from collections import Iterable
-  from .utils import is_string
-  if is_string(filenames):
-    return [File(filenames, 'r')]
-  elif isinstance(filenames, Iterable):
-    return [File(k, 'r') for k in filenames]
-  else:
-    raise TypeError(
-        "Unexpected input object. This function is expecting an "
-        "iterable of filenames.")
+def open_file(filename):
+    """open_file(filename) -> file
 
+    Opens a file for reading.
 
-def save(array, filename, create_directories=False):
-  """Saves the contents of an array-like object to file.
+    Parameters
+    ----------
 
-  Effectively, this is the same as creating a :py:class:`File` object
-  with the mode flag set to ``'w'`` (write with truncation) and calling
-  :py:meth:`File.write` passing ``array`` as parameter.
+    ``filename`` : str
+      The name of the file to open.
 
-  Parameters:
 
-  ``array`` : array_like
-    The array-like object to be saved on the file
+    """
 
-  ``filename`` : str
-    The name of the file where you need the contents saved to
+    def check_gray(img):
+        # Checking for gray scaled images
+        if (
+            img.ndim > 2
+            and np.allclose(img[:, :, 0], img[:, :, 1])
+            and np.allclose(img[:, :, 0], img[:, :, 2])
+        ):
+            img = img[:, :, 0]
+        return img
 
-  ``create_directories`` : bool
-    Automatically generate the directories if required (defaults to ``False``
-    because of compatibility reasons; might change in future to default to
-    ``True``)
-  """
-  # create directory if not existent yet
-  if create_directories:
-    create_directories_safe(os.path.dirname(filename))
+    extension = os.path.splitext(filename)[1]  # get the extension
 
-  # requires data is c-contiguous and aligned, will create a copy otherwise
-  array = numpy.require(array, requirements=('C_CONTIGUOUS', 'ALIGNED'))
+    if extension in hdf5_extensions:
+        with h5py.File(filename, "r") as f:
+            if "array" not in f.keys():
+                raise RuntimeError(
+                    "The file '%s' does not contain the key 'array'" % filename
+                )
 
-  return File(filename, 'w').write(array)
+            return np.array(f["array"])
+    elif extension in image_extensions:
 
-# Just to make it homogenous with the C++ API
-write = save
-read = load
+        img = imageio.imread(filename)
 
+        # PNGs have a 4th channel, which we don't want
+        # Alpha channels for instance have to be ignored
+        if extension.lower() == ".png":
+            img = img[:, :, 0:3]
 
-def append(array, filename):
-  """append(array, filename) -> position
-
-  Appends the contents of an array-like object to file.
+        img = check_gray(img)
+        return img if img.ndim == 2 else to_bob(img)
+    else:
+        raise RuntimeError(f"Unknown file extension: {extension}")
 
-  Effectively, this is the same as creating a :py:class:`File` object
-  with the mode flag set to ``'a'`` (append) and calling
-  :py:meth:`File.append` passing ``array`` as parameter.
 
-  **Parameters:**
+def write_file(filename, data, format="pillow"):
+    """
+    write_file(filename, data) -> None
 
-  ``array`` : array_like
-    The array-like object to be saved on the file
+    Writes the contents of a :py:class:`numpy.ndarray` to a file.
 
-  ``filename`` : str
-    The name of the file where you need the contents saved to
+    Parameters
+    ----------
 
-  **Returns:**
+    ``filename`` : str
+      The name of the file to write to.
 
-  ``position`` : int
-    See :py:meth:`File.append`
-  """
+    ``data`` : :py:class:`numpy.ndarray`
+      The data to write to the file.
 
-  # requires data is c-contiguous and aligned, will create a copy otherwise
-  array = numpy.require(array, requirements=('C_CONTIGUOUS', 'ALIGNED'))
+    ``format`` : str
+      The format to use to read the file. By default imageio selects the appropriate for you based on the filename and its contents
 
-  return File(filename, 'a').append(array)
 
+    """
 
-def peek(filename):
-  """peek(filename) -> dtype, shape, stride
+    extension = os.path.splitext(filename)[1]  # get the extension
 
-  Returns the type of array (frame or sample) saved in the given file.
+    if extension in hdf5_extensions:
+        with h5py.File(filename, "w") as f:
+            f["array"] = data
+    elif extension in image_extensions:
+        # Pillow is the format with the best support for all image formats
+        imageio.imwrite(filename, data, format=format)
+    else:
+        raise RuntimeError(f"Unknown file extension: {extension}")
 
-  Effectively, this is the same as creating a :py:class:`File` object
-  with the mode flag set to `r` (read-only) and calling
-  :py:meth:`File.describe`.
 
-  **Parameters**:
+def load(inputs):
+    """load(inputs) -> data
+
+    Loads the contents of a file, an iterable of files, or an iterable of
+    :py:class:`bob.io.base.File`'s into a :py:class:`numpy.ndarray`.
+
+    **Parameters:**
+
+    ``inputs`` : various types
+
+      This might represent several different entities:
+
+      1. The name of a file (full path) from where to load the data. In this
+         case, this assumes that the file contains an array and returns a loaded
+         numpy ndarray.
+      2. An iterable of filenames to be loaded in memory. In this case, this
+         would assume that each file contains a single 1D sample or a set of 1D
+         samples, load them in memory and concatenate them into a single and
+         returned 2D :py:class:`numpy.ndarray`.
+      3. An iterable of :py:class:`File`. In this case, this would assume
+         that each :py:class:`File` contains a single 1D sample or a set
+         of 1D samples, load them in memory if required and concatenate them into
+         a single and returned 2D :py:class:`numpy.ndarray`.
+      4. An iterable with mixed filenames and :py:class:`File`. In this
+         case, this would returned a 2D :py:class:`numpy.ndarray`, as described
+         by points 2 and 3 above.
+
+    **Returns:**
+
+    ``data`` : :py:class:`numpy.ndarray`
+      The data loaded from the given ``inputs``.
+    """
+
+    from collections.abc import Iterable
+    import numpy
+
+    if _is_string(inputs):
+        if not os.path.exists(inputs):
+            raise RuntimeError(f"`{inputs}' does not exist!")
+        return open_file(inputs)
+
+    elif isinstance(inputs, Iterable):
+        retval = []
+        for obj in inputs:
+            if _is_string(obj):
+                retval.append(load(obj))
+            # elif isinstance(obj, File):
+            #    retval.append(obj.read())
+            else:
+                raise TypeError(
+                    "Iterable contains an object which is not a filename nor a "
+                    "bob.io.base.File."
+                )
+        return numpy.vstack(retval)
+    else:
+        raise TypeError(
+            "Unexpected input object. This function is expecting a filename, "
+            "or an iterable of filenames and/or bob.io.base.File's"
+        )
 
-  ``filename`` : str
-    The name of the file to peek information from
 
-  **Returns:**
+def save(array, filename, create_directories=False):
+    """Saves the contents of an array-like object to file.
 
-  ``dtype, shape, stride`` : see :py:meth:`File.describe`
-  """
-  return File(filename, 'r').describe()
+    Effectively, this is the same as creating a :py:class:`File` object
+    with the mode flag set to ``'w'`` (write with truncation) and calling
+    :py:meth:`File.write` passing ``array`` as parameter.
 
+    Parameters:
 
-def peek_all(filename):
-  """peek_all(filename) -> dtype, shape, stride
+    ``array`` : array_like
+      The array-like object to be saved on the file
 
-  Returns the type of array (for full readouts) saved in the given file.
+    ``filename`` : str
+      The name of the file where you need the contents saved to
 
-  Effectively, this is the same as creating a :py:class:`File` object
-  with the mode flag set to ``'r'`` (read-only) and returning
-  ``File.describe`` with its parameter ``all`` set to ``True``.
+    ``create_directories`` : bool
+      Automatically generate the directories if required (defaults to ``False``
+      because of compatibility reasons; might change in future to default to
+      ``True``)
+    """
+    # create directory if not existent yet
+    if create_directories:
+        create_directories_safe(os.path.dirname(filename))
 
-  **Parameters:**
+    # requires data is c-contiguous and aligned, will create a copy otherwise
+    array = np.require(array, requirements=("C_CONTIGUOUS", "ALIGNED"))
 
-  ``filename`` : str
-    The name of the file to peek information from
+    write_file(filename, array)
 
-  **Returns:**
 
-  ``dtype, shape, stride`` : see :py:meth:`File.describe`
-  """
-  return File(filename, 'r').describe(all=True)
+# Just to make it homogenous with the C++ API
+write = save
+read = load
 
 
 # Keeps compatibility with the previously existing API
-open = File
-
-
-def get_config():
-  """Returns a string containing the configuration information.
-  """
-  return bob.extension.get_config(__name__, version.externals, version.api)
+# open = File
 
 
 def get_include_directories():
-  """get_include_directories() -> includes
-
-  Returns a list of include directories for dependent libraries, such as HDF5.
-  This function is automatically used by
-  :py:func:`bob.extension.get_bob_libraries` to retrieve the non-standard
-  include directories that are required to use the C bindings of this library
-  in dependent classes. You shouldn't normally need to call this function by
-  hand.
-
-  **Returns:**
-
-  ``includes`` : [str]
-    The list of non-standard include directories required to use the C bindings
-    of this class. For now, only the directory for the HDF5 headers are
-    returned.
-  """
-  # try to use pkg_config first
-  try:
-    from bob.extension.utils import find_header
-    # locate pkg-config on our own
-    header = 'hdf5.h'
-    candidates = find_header(header)
-    if not candidates:
-      raise RuntimeError(
-          "could not find %s's `%s' - have you installed %s on this "
-          "machine?" % ('hdf5', header, 'hdf5'))
-
-    return [os.path.dirname(candidates[0])]
-  except RuntimeError:
-    from bob.extension import pkgconfig
-    pkg = pkgconfig('hdf5')
-    return pkg.include_directories()
-
-
-def get_macros():
-  """get_macros() -> macros
-
-  Returns a list of preprocessor macros, such as ``(HAVE_HDF5, 1)``. This
-  function is automatically used by :py:func:`bob.extension.get_bob_libraries`
-  to retrieve the prerpocessor definitions that are required to use the C
-  bindings of this library in dependent classes. You shouldn't normally need to
-  call this function by hand.
-
-  **Returns:**
-
-  ``macros`` : [(str,str)]
-    The list of preprocessor macros required to use the C bindings of this
-    class. For now, only ``('HAVE_HDF5', '1')`` is returned, when applicable.
-  """
-  # get include directories
-  if get_include_directories():
-    return [('HAVE_HDF5', '1')]
+    """get_include_directories() -> includes
+
+    Returns a list of include directories for dependent libraries, such as HDF5.
+    This function is automatically used by
+    :py:func:`bob.extension.get_bob_libraries` to retrieve the non-standard
+    include directories that are required to use the C bindings of this library
+    in dependent classes. You shouldn't normally need to call this function by
+    hand.
+
+    **Returns:**
+
+    ``includes`` : [str]
+      The list of non-standard include directories required to use the C bindings
+      of this class. For now, only the directory for the HDF5 headers are
+      returned.
+    """
+    # try to use pkg_config first
+    try:
+        from bob.extension.utils import find_header
+
+        # locate pkg-config on our own
+        header = "hdf5.h"
+        candidates = find_header(header)
+        if not candidates:
+            raise RuntimeError(
+                "could not find %s's `%s' - have you installed %s on this "
+                "machine?" % ("hdf5", header, "hdf5")
+            )
+
+        return [os.path.dirname(candidates[0])]
+    except RuntimeError:
+        from bob.extension import pkgconfig
+
+        pkg = pkgconfig("hdf5")
+        return pkg.include_directories()
 
 
 def _generate_features(reader, paths, same_size=False):
-  """Load and stack features in a memory efficient way. This function is
-  meant to be used inside :py:func:`vstack_features`.
-
-  Parameters
-  ----------
-  reader : ``collections.Callable``
-    See the documentation of :py:func:`vstack_features`.
-  paths : ``collections.Iterable``
-    See the documentation of :py:func:`vstack_features`.
-  same_size : :obj:`bool`, optional
-    See the documentation of :py:func:`vstack_features`.
-
-  Yields
-  ------
-  object
-    The first object returned is a tuple of :py:class:`numpy.dtype` of
-    features and the shape of the first feature. The rest of objects are
-    the actual values in features. The features are returned in C order.
-  """
-
-  shape_determined = False
-  for i, path in enumerate(paths):
-
-    feature = numpy.atleast_2d(reader(path))
-    feature = numpy.ascontiguousarray(feature)
-    if not shape_determined:
-      shape_determined = True
-      dtype = feature.dtype
-      shape = list(feature.shape)
-      yield (dtype, shape)
-    else:
-      # make sure all features have the same shape and dtype
-      if same_size:
-        assert shape == list(feature.shape), f"Expected feature shape of {shape}, got {feature.shape}"
-      else:
-        assert shape[1:] == list(feature.shape[1:]), f"Ignoring first dimension, expected feature shape of {shape}, got {feature.shape}"
-      assert dtype == feature.dtype
+    """Load and stack features in a memory efficient way. This function is
+    meant to be used inside :py:func:`vstack_features`.
+
+    Parameters
+    ----------
+    reader : ``collections.Callable``
+      See the documentation of :py:func:`vstack_features`.
+    paths : ``collections.Iterable``
+      See the documentation of :py:func:`vstack_features`.
+    same_size : :obj:`bool`, optional
+      See the documentation of :py:func:`vstack_features`.
 
-    if same_size:
-      yield (feature.ravel(),)
-    else:
-      for feat in feature:
-        yield (feat.ravel(),)
+    Yields
+    ------
+    object
+      The first object returned is a tuple of :py:class:`numpy.dtype` of
+      features and the shape of the first feature. The rest of objects are
+      the actual values in features. The features are returned in C order.
+    """
+
+    shape_determined = False
+    for i, path in enumerate(paths):
+
+        feature = np.atleast_2d(reader(path))
+        feature = np.ascontiguousarray(feature)
+        if not shape_determined:
+            shape_determined = True
+            dtype = feature.dtype
+            shape = list(feature.shape)
+            yield (dtype, shape)
+        else:
+            # make sure all features have the same shape and dtype
+            if same_size:
+                assert shape == list(
+                    feature.shape
+                ), f"Expected feature shape of {shape}, got {feature.shape}"
+            else:
+                assert shape[1:] == list(
+                    feature.shape[1:]
+                ), f"Ignoring first dimension, expected feature shape of {shape}, got {feature.shape}"
+            assert dtype == feature.dtype
+
+        if same_size:
+            yield (feature.ravel(),)
+        else:
+            for feat in feature:
+                yield (feat.ravel(),)
 
 
 def vstack_features(reader, paths, same_size=False, dtype=None):
-  """Stacks all features in a memory efficient way.
-
-  Parameters
-  ----------
-  reader : ``collections.Callable``
-    The function to load the features. The function should only take one
-    argument ``path`` and return loaded features. Use :any:`functools.partial`
-    to accommodate your reader to this format.
-    The features returned by ``reader`` are expected to have the same
-    :py:class:`numpy.dtype` and the same shape except for their first
-    dimension. First dimension should correspond to the number of samples.
-  paths : ``collections.Iterable``
-    An iterable of paths to iterate on. Whatever is inside path is given to
-    ``reader`` so they do not need to be necessarily paths to actual files.
-    If ``same_size`` is ``True``, ``len(paths)`` must be valid.
-  same_size : :obj:`bool`, optional
-    If ``True``, it assumes that arrays inside all the paths are the same
-    shape. If you know the features are the same size in all paths, set this
-    to ``True`` to improve the performance.
-  dtype : :py:class:`numpy.dtype`, optional
-    If provided, the data will be casted to this format.
-
-  Returns
-  -------
-  numpy.ndarray
-    The read features with the shape ``(n_samples, *features_shape[1:])``.
-
-  Examples
-  --------
-  This function in a simple way is equivalent to calling
-  ``numpy.vstack([reader(p) for p in paths])``.
-
-  >>> import numpy
-  >>> from bob.io.base import vstack_features
-  >>> def reader(path):
-  ...     # in each file, there are 5 samples and features are 2 dimensional.
-  ...     return numpy.arange(10).reshape(5,2)
-  >>> paths = ['path1', 'path2']
-  >>> all_features = vstack_features(reader, paths)
-  >>> numpy.allclose(all_features, numpy.array(
-  ...     [[0, 1],
-  ...      [2, 3],
-  ...      [4, 5],
-  ...      [6, 7],
-  ...      [8, 9],
-  ...      [0, 1],
-  ...      [2, 3],
-  ...      [4, 5],
-  ...      [6, 7],
-  ...      [8, 9]]))
-  True
-  >>> all_features_with_more_memory = numpy.vstack([reader(p) for p in paths])
-  >>> numpy.allclose(all_features, all_features_with_more_memory)
-  True
-
-  You can allocate the array at once to improve the performance if you know
-  that all features in paths have the same shape and you know the total number
-  of the paths:
-
-  >>> all_features = vstack_features(reader, paths, same_size=True)
-  >>> numpy.allclose(all_features, numpy.array(
-  ...     [[0, 1],
-  ...      [2, 3],
-  ...      [4, 5],
-  ...      [6, 7],
-  ...      [8, 9],
-  ...      [0, 1],
-  ...      [2, 3],
-  ...      [4, 5],
-  ...      [6, 7],
-  ...      [8, 9]]))
-  True
-  """
-  iterable = _generate_features(reader, paths, same_size)
-  data_dtype, shape = next(iterable)
-  if dtype is None:
-    dtype = data_dtype
-  if same_size:
-    # numpy black magic: https://stackoverflow.com/a/12473478/1286165
-    field_dtype = [("", (dtype, (numpy.prod(shape),)))]
-    total_size = len(paths)
-    all_features = numpy.fromiter(iterable, field_dtype, total_size)
-  else:
-    field_dtype = [("", (dtype, (numpy.prod(shape[1:]),)))]
-    all_features = numpy.fromiter(iterable, field_dtype)
-
-  # go from a field array to a normal array
-  all_features = all_features.view(dtype)
-  # the shape is assumed to be (n_samples, ...) it can be (5, 2) or (5, 3, 4).
-  shape = list(shape)
-  shape[0] = -1
-  return numpy.reshape(all_features, shape, order="C")
+    """Stacks all features in a memory efficient way.
+
+    Parameters
+    ----------
+    reader : ``collections.Callable``
+      The function to load the features. The function should only take one
+      argument ``path`` and return loaded features. Use :any:`functools.partial`
+      to accommodate your reader to this format.
+      The features returned by ``reader`` are expected to have the same
+      :py:class:`numpy.dtype` and the same shape except for their first
+      dimension. First dimension should correspond to the number of samples.
+    paths : ``collections.Iterable``
+      An iterable of paths to iterate on. Whatever is inside path is given to
+      ``reader`` so they do not need to be necessarily paths to actual files.
+      If ``same_size`` is ``True``, ``len(paths)`` must be valid.
+    same_size : :obj:`bool`, optional
+      If ``True``, it assumes that arrays inside all the paths are the same
+      shape. If you know the features are the same size in all paths, set this
+      to ``True`` to improve the performance.
+    dtype : :py:class:`numpy.dtype`, optional
+      If provided, the data will be casted to this format.
+
+    Returns
+    -------
+    numpy.ndarray
+      The read features with the shape ``(n_samples, *features_shape[1:])``.
+
+    Examples
+    --------
+    This function in a simple way is equivalent to calling
+    ``numpy.vstack([reader(p) for p in paths])``.
+
+    >>> import numpy
+    >>> from bob.io.base import vstack_features
+    >>> def reader(path):
+    ...     # in each file, there are 5 samples and features are 2 dimensional.
+    ...     return numpy.arange(10).reshape(5,2)
+    >>> paths = ['path1', 'path2']
+    >>> all_features = vstack_features(reader, paths)
+    >>> numpy.allclose(all_features, numpy.array(
+    ...     [[0, 1],
+    ...      [2, 3],
+    ...      [4, 5],
+    ...      [6, 7],
+    ...      [8, 9],
+    ...      [0, 1],
+    ...      [2, 3],
+    ...      [4, 5],
+    ...      [6, 7],
+    ...      [8, 9]]))
+    True
+    >>> all_features_with_more_memory = numpy.vstack([reader(p) for p in paths])
+    >>> numpy.allclose(all_features, all_features_with_more_memory)
+    True
+
+    You can allocate the array at once to improve the performance if you know
+    that all features in paths have the same shape and you know the total number
+    of the paths:
+
+    >>> all_features = vstack_features(reader, paths, same_size=True)
+    >>> numpy.allclose(all_features, numpy.array(
+    ...     [[0, 1],
+    ...      [2, 3],
+    ...      [4, 5],
+    ...      [6, 7],
+    ...      [8, 9],
+    ...      [0, 1],
+    ...      [2, 3],
+    ...      [4, 5],
+    ...      [6, 7],
+    ...      [8, 9]]))
+    True
+    """
+    iterable = _generate_features(reader, paths, same_size)
+    data_dtype, shape = next(iterable)
+    if dtype is None:
+        dtype = data_dtype
+    if same_size:
+        # numpy black magic: https://stackoverflow.com/a/12473478/1286165
+        field_dtype = [("", (dtype, (np.prod(shape),)))]
+        total_size = len(paths)
+        all_features = np.fromiter(iterable, field_dtype, total_size)
+    else:
+        field_dtype = [("", (dtype, (np.prod(shape[1:]),)))]
+        all_features = np.fromiter(iterable, field_dtype)
+
+    # go from a field array to a normal array
+    all_features = all_features.view(dtype)
+    # the shape is assumed to be (n_samples, ...) it can be (5, 2) or (5, 3, 4).
+    shape = list(shape)
+    shape[0] = -1
+    return np.reshape(all_features, shape, order="C")
 
 
 # gets sphinx autodoc done right - don't remove it
-__all__ = [_ for _ in dir() if not _.startswith('_')]
+__all__ = [_ for _ in dir() if not _.startswith("_")]
diff --git a/bob/io/base/bobskin.cpp b/bob/io/base/bobskin.cpp
deleted file mode 100644
index 494bdaf..0000000
--- a/bob/io/base/bobskin.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed  6 Nov 07:57:57 2013
- *
- * @brief Implementation of our bobskin class
- */
-
-#include "bobskin.h"
-#include <stdexcept>
-
-bobskin::bobskin(PyObject* array, bob::io::base::array::ElementType eltype) {
-
-  if (!PyArray_CheckExact(array)) {
-    PyErr_SetString(PyExc_TypeError, "input object to bobskin constructor is not (exactly) a numpy.ndarray");
-    throw std::runtime_error("error is already set");
-  }
-
-  m_type.set<npy_intp>(eltype, PyArray_NDIM((PyArrayObject*)array),
-      PyArray_DIMS((PyArrayObject*)array),
-      PyArray_STRIDES((PyArrayObject*)array));
-
-  m_ptr = PyArray_DATA((PyArrayObject*)array);
-
-}
-
-bobskin::bobskin(PyArrayObject* array, bob::io::base::array::ElementType eltype) {
-
-  m_type.set<npy_intp>(eltype, PyArray_NDIM((PyArrayObject*)array),
-      PyArray_DIMS((PyArrayObject*)array),
-      PyArray_STRIDES((PyArrayObject*)array));
-
-  m_ptr = PyArray_DATA((PyArrayObject*)array);
-
-}
-
-static bob::io::base::array::ElementType signed_integer_type(int bits) {
-  switch(bits) {
-    case 8:
-      return bob::io::base::array::t_int8;
-    case 16:
-      return bob::io::base::array::t_int16;
-    case 32:
-      return bob::io::base::array::t_int32;
-    case 64:
-      return bob::io::base::array::t_int64;
-    default:
-      PyErr_Format(PyExc_TypeError, "unsupported signed integer element type with %d bits", bits);
-  }
-  return bob::io::base::array::t_unknown;
-}
-
-static bob::io::base::array::ElementType unsigned_integer_type(int bits) {
-  switch(bits) {
-    case 8:
-      return bob::io::base::array::t_uint8;
-    case 16:
-      return bob::io::base::array::t_uint16;
-    case 32:
-      return bob::io::base::array::t_uint32;
-    case 64:
-      return bob::io::base::array::t_uint64;
-    default:
-      PyErr_Format(PyExc_TypeError, "unsupported unsigned signed integer element type with %d bits", bits);
-  }
-  return bob::io::base::array::t_unknown;
-}
-
-static bob::io::base::array::ElementType num_to_type (int num) {
-  switch(num) {
-    case NPY_BOOL:
-      return bob::io::base::array::t_bool;
-
-    //signed integers
-    case NPY_BYTE:
-      return signed_integer_type(NPY_BITSOF_CHAR);
-    case NPY_SHORT:
-      return signed_integer_type(NPY_BITSOF_SHORT);
-    case NPY_INT:
-      return signed_integer_type(NPY_BITSOF_INT);
-    case NPY_LONG:
-      return signed_integer_type(NPY_BITSOF_LONG);
-    case NPY_LONGLONG:
-      return signed_integer_type(NPY_BITSOF_LONGLONG);
-
-    //unsigned integers
-    case NPY_UBYTE:
-      return unsigned_integer_type(NPY_BITSOF_CHAR);
-    case NPY_USHORT:
-      return unsigned_integer_type(NPY_BITSOF_SHORT);
-    case NPY_UINT:
-      return unsigned_integer_type(NPY_BITSOF_INT);
-    case NPY_ULONG:
-      return unsigned_integer_type(NPY_BITSOF_LONG);
-    case NPY_ULONGLONG:
-      return unsigned_integer_type(NPY_BITSOF_LONGLONG);
-
-    //floats
-    case NPY_FLOAT32:
-      return bob::io::base::array::t_float32;
-    case NPY_FLOAT64:
-      return bob::io::base::array::t_float64;
-#ifdef NPY_FLOAT128
-    case NPY_FLOAT128:
-      return bob::io::base::array::t_float128;
-#endif
-
-    //complex
-    case NPY_COMPLEX64:
-      return bob::io::base::array::t_complex64;
-    case NPY_COMPLEX128:
-      return bob::io::base::array::t_complex128;
-#ifdef NPY_COMPLEX256
-    case NPY_COMPLEX256:
-      return bob::io::base::array::t_complex256;
-#endif
-
-    default:
-      PyErr_Format(PyExc_TypeError, "unsupported NumPy element type (%d)", num);
-  }
-
-  return bob::io::base::array::t_unknown;
-}
-
-bobskin::bobskin(PyBlitzArrayObject* array) {
-  bob::io::base::array::ElementType eltype = num_to_type(array->type_num);
-  if (eltype == bob::io::base::array::t_unknown) {
-    throw std::runtime_error("error is already set");
-  }
-  m_type.set<Py_ssize_t>(num_to_type(array->type_num), array->ndim,
-      array->shape, array->stride);
-  m_ptr = array->data;
-}
-
-bobskin::~bobskin() { }
-
-void bobskin::set(const interface&) {
-  PyErr_SetString(PyExc_NotImplementedError, "setting C++ bobskin with (const interface&) is not implemented - DEBUG ME!");
-  throw std::runtime_error("error is already set");
-}
-
-void bobskin::set(boost::shared_ptr<interface>) {
-  PyErr_SetString(PyExc_NotImplementedError, "setting C++ bobskin with (boost::shared_ptr<interface>) is not implemented - DEBUG ME!");
-  throw std::runtime_error("error is already set");
-}
-
-void bobskin::set (const bob::io::base::array::typeinfo&) {
-  PyErr_SetString(PyExc_NotImplementedError, "setting C++ bobskin with (const typeinfo&) implemented - DEBUG ME!");
-  throw std::runtime_error("error is already set");
-}
-
-boost::shared_ptr<void> bobskin::owner() {
-  PyErr_SetString(PyExc_NotImplementedError, "acquiring non-const owner from C++ bobskin is not implemented - DEBUG ME!");
-  throw std::runtime_error("error is already set");
-}
-
-boost::shared_ptr<const void> bobskin::owner() const {
-  PyErr_SetString(PyExc_NotImplementedError, "acquiring const owner from C++ bobskin is not implemented - DEBUG ME!");
-  throw std::runtime_error("error is already set");
-}
diff --git a/bob/io/base/bobskin.h b/bob/io/base/bobskin.h
deleted file mode 100644
index d18cf6e..0000000
--- a/bob/io/base/bobskin.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Tue  5 Nov 22:09:07 2013
- *
- * @brief A pythonic version of bob::io::base::array::interface, with minimal
- * functionality.
- */
-
-#ifndef PYTHON_BOB_IO_BOBSKIN_H
-#define PYTHON_BOB_IO_BOBSKIN_H
-
-#include <Python.h>
-
-#include <bob.io.base/array.h>
-
-#include <bob.blitz/capi.h>
-
-
-/**
- * Wraps a PyArrayObject such that we can access it from bob::io
- */
-class bobskin: public bob::io::base::array::interface {
-
-  public: //api
-
-    /**
-     * @brief Builds a new skin from an array like object
-     */
-    bobskin(PyObject* array, bob::io::base::array::ElementType eltype);
-
-    /**
-     * @brief Builds a new skin from a numpy array object
-     */
-    bobskin(PyArrayObject* array, bob::io::base::array::ElementType eltype);
-
-    /**
-     * @brief Builds a new skin around a blitz array object
-     */
-    bobskin(PyBlitzArrayObject* array);
-
-    /**
-     * @brief By default, the interface is never freed. You must override
-     * this method to do something special for your class type.
-     */
-    virtual ~bobskin();
-
-    /**
-     * @brief Copies the data from another interface.
-     */
-    virtual void set(const interface& other);
-
-    /**
-     * @brief Refers to the data of another interface.
-     */
-    virtual void set(boost::shared_ptr<interface> other);
-
-    /**
-     * @brief Re-allocates this interface taking into consideration new
-     * requirements. The internal memory should be considered uninitialized.
-     */
-    virtual void set (const bob::io::base::array::typeinfo& req);
-
-    /**
-     * @brief Type information for this interface.
-     */
-    virtual const bob::io::base::array::typeinfo& type() const { return m_type; }
-
-    /**
-     * @brief Borrows a reference from the underlying memory. This means
-     * this object continues to be responsible for deleting the memory and
-     * you should make sure that it outlives the usage of the returned
-     * pointer.
-     */
-    virtual void* ptr() { return m_ptr; }
-    virtual const void* ptr() const { return m_ptr; }
-
-    /**
-     * @brief Returns a representation of the internal cache using shared
-     * pointers.
-     */
-    virtual boost::shared_ptr<void> owner();
-    virtual boost::shared_ptr<const void> owner() const;
-
-  private: //representation
-
-    bob::io::base::array::typeinfo m_type; ///< type information
-    void* m_ptr; ///< pointer to the data
-
-};
-
-#endif /* PYTHON_BOB_IO_BOBSKIN_H */
diff --git a/bob/io/base/codec.cpp b/bob/io/base/codec.cpp
deleted file mode 100644
index bfc3eb9..0000000
--- a/bob/io/base/codec.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed 14 May 11:53:36 2014 CEST
- *
- * @brief Bindings to bob::io::base::CodecRegistry
- */
-
-#define BOB_IO_BASE_MODULE
-#include <bob.io.base/api.h>
-
-int PyBobIoCodec_Register (const char* extension, const char* description, bob::io::base::file_factory_t factory) {
-  boost::shared_ptr<bob::io::base::CodecRegistry> instance =
-    bob::io::base::CodecRegistry::instance();
-
-  if (instance->isRegistered(extension)) {
-    PyErr_Format(PyExc_RuntimeError, "codec for extension `%s' is already registered with description `%s' - in order to register a new codec for such an extension, first unregister the existing codec", extension, PyBobIoCodec_GetDescription(extension));
-    return 0;
-  }
-
-  instance->registerExtension(extension, description, factory);
-  return 1;
-}
-
-int PyBobIoCodec_Deregister (const char* extension) {
-  boost::shared_ptr<bob::io::base::CodecRegistry> instance =
-    bob::io::base::CodecRegistry::instance();
-
-  if (!instance->isRegistered(extension)) {
-    PyErr_Format(PyExc_RuntimeError, "there is no codec registered for extension `%s'", extension);
-    return 0;
-  }
-
-  instance->deregisterExtension(extension);
-  return 1;
-}
-
-int PyBobIoCodec_IsRegistered (const char* extension) {
-  boost::shared_ptr<bob::io::base::CodecRegistry> instance =
-    bob::io::base::CodecRegistry::instance();
-  if (instance->isRegistered(extension)) return 1;
-  return 0;
-}
-
-const char* PyBobIoCodec_GetDescription (const char* extension) {
-  boost::shared_ptr<bob::io::base::CodecRegistry> instance =
-    bob::io::base::CodecRegistry::instance();
-  return instance->getDescription(extension);
-}
diff --git a/bob/io/base/cpp/CodecRegistry.cpp b/bob/io/base/cpp/CodecRegistry.cpp
deleted file mode 100644
index 1f6c6d0..0000000
--- a/bob/io/base/cpp/CodecRegistry.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @date Tue Oct 25 23:25:46 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Implements the CodecRegistry class.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <vector>
-
-#include <boost/filesystem.hpp>
-#include <boost/format.hpp>
-
-#include <bob.io.base/CodecRegistry.h>
-
-#include <bob.core/logging.h>
-
-boost::shared_ptr<bob::io::base::CodecRegistry> bob::io::base::CodecRegistry::instance() {
-  static boost::shared_ptr<bob::io::base::CodecRegistry> s_instance(new CodecRegistry());
-  return s_instance;
-}
-
-void bob::io::base::CodecRegistry::deregisterExtension(const char* ext) {
-  s_extension2codec.erase(ext);
-  s_extension2description.erase(ext);
-}
-
-const char* bob::io::base::CodecRegistry::getDescription(const char* ext) {
-  auto it = s_extension2description.find(ext);
-  if (it == s_extension2description.end()) return 0;
-  return it->second.c_str();
-}
-
-void bob::io::base::CodecRegistry::deregisterFactory(bob::io::base::file_factory_t factory) {
-
-  std::vector<std::string> to_remove;
-  for (auto it = s_extension2codec.begin(); it != s_extension2codec.end(); ++it) {
-    if (it->second == factory) to_remove.push_back(it->first);
-  }
-
-  for (auto it = to_remove.begin(); it != to_remove.end(); ++it) {
-    s_extension2codec.erase(*it);
-    s_extension2description.erase(*it);
-  }
-
-}
-
-void bob::io::base::CodecRegistry::registerExtension(const char* extension,
-    const char* description, bob::io::base::file_factory_t codec) {
-
-  auto it = s_extension2codec.find(extension);
-
-  if (it == s_extension2codec.end()) {
-    s_extension2codec[extension] = codec;
-    s_extension2description[extension] = description;
-  }
-  else if (!s_ignore) {
-    boost::format m("extension already registered: %s - ignoring second registration with description `%s'");
-    m % extension % description;
-    bob::core::error << m.str() << std::endl;
-    throw std::runtime_error(m.str());
-  }
-
-}
-
-bool bob::io::base::CodecRegistry::isRegistered(const char* ext) {
-  std::string extension(ext);
-  std::string lower_extension = extension;
-  std::transform(extension.begin(), extension.end(), lower_extension.begin(), ::tolower);
-  return (s_extension2codec.find(lower_extension) != s_extension2codec.end());
-}
-
-bob::io::base::file_factory_t bob::io::base::CodecRegistry::findByExtension (const char* ext) {
-
-  std::string extension(ext);
-  std::string lower_extension = extension;
-  std::transform(extension.begin(), extension.end(), lower_extension.begin(), ::tolower);
-
-  std::map<std::string, bob::io::base::file_factory_t >::iterator it =
-    s_extension2codec.find(lower_extension);
-
-  if (it == s_extension2codec.end()) {
-    boost::format m("unregistered extension: %s");
-    m % lower_extension;
-    throw std::runtime_error(m.str());
-  }
-
-  return it->second;
-
-}
-
-bob::io::base::file_factory_t bob::io::base::CodecRegistry::findByFilenameExtension
-(const char* filename) {
-
-  return findByExtension(boost::filesystem::path(filename).extension().c_str());
-
-}
diff --git a/bob/io/base/cpp/File.cpp b/bob/io/base/cpp/File.cpp
deleted file mode 100644
index bbdfedf..0000000
--- a/bob/io/base/cpp/File.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * @date Tue Oct 25 23:25:46 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <bob.io.base/File.h>
-
-bob::io::base::File::~File() { }
diff --git a/bob/io/base/cpp/HDF5ArrayFile.cpp b/bob/io/base/cpp/HDF5ArrayFile.cpp
deleted file mode 100644
index 8a9aa97..0000000
--- a/bob/io/base/cpp/HDF5ArrayFile.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/**
- * @date Tue Oct 25 23:25:46 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Implements the HDF5 (.hdf5) array codec
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/make_shared.hpp>
-#include <boost/filesystem.hpp>
-#include <boost/format.hpp>
-
-#include <bob.io.base/CodecRegistry.h>
-#include <bob.io.base/HDF5File.h>
-
-/**
- * Read and write arrays in HDF5 format
- */
-class HDF5ArrayFile: public bob::io::base::File {
-
-  public:
-
-    HDF5ArrayFile (const char* filename, bob::io::base::HDF5File::mode_t mode):
-      m_file(filename, mode),
-      m_filename(filename),
-      m_size_arrayset(0),
-      m_newfile(true) {
-
-        //tries to update the current descriptors
-        std::vector<std::string> paths;
-        m_file.paths(paths);
-
-        if (paths.size()) { //file contains data, read it and establish defaults
-          m_path = paths[0]; ///< locks on a path name from now on...
-          m_newfile = false; ///< blocks re-initialization
-
-          //arrayset reading
-          const bob::io::base::HDF5Descriptor& desc_arrayset = m_file.describe(m_path)[0];
-          desc_arrayset.type.copy_to(m_type_arrayset);
-          m_size_arrayset = desc_arrayset.size;
-
-          //array reading
-          const bob::io::base::HDF5Descriptor& desc_array = m_file.describe(m_path)[1];
-          desc_array.type.copy_to(m_type_array);
-
-          //if m_type_all has extent == 1 on the first dimension and dimension
-          //0 is expandable, collapse that
-          if (m_type_array.shape[0] == 1 && desc_arrayset.expandable)
-          {
-            m_type_array = m_type_arrayset;
-          }
-        }
-
-        else {
-          //default path in case the file is new or has been truncated
-          m_path = "/array";
-        }
-
-      }
-
-    virtual ~HDF5ArrayFile() { }
-
-    virtual const char* filename() const {
-      return m_filename.c_str();
-    }
-
-    virtual const bob::io::base::array::typeinfo& type_all () const {
-      return m_type_array;
-    }
-
-    virtual const bob::io::base::array::typeinfo& type () const {
-      return m_type_arrayset;
-    }
-
-    virtual size_t size() const {
-      return m_size_arrayset;
-    }
-
-    virtual const char* name() const {
-      return s_codecname.c_str();
-    }
-
-    virtual void read_all(bob::io::base::array::interface& buffer) {
-
-      if(m_newfile) {
-        boost::format f("uninitialized HDF5 file at '%s' cannot be read");
-        f % m_filename;
-        throw std::runtime_error(f.str());
-      }
-
-      if(!buffer.type().is_compatible(m_type_array)) buffer.set(m_type_array);
-
-      m_file.read_buffer(m_path, 0, buffer.type(), buffer.ptr());
-    }
-
-    virtual void read(bob::io::base::array::interface& buffer, size_t index) {
-
-      if(m_newfile) {
-        boost::format f("uninitialized HDF5 file at '%s' cannot be read");
-        f % m_filename;
-        throw std::runtime_error(f.str());
-      }
-
-      if(!buffer.type().is_compatible(m_type_arrayset)) buffer.set(m_type_arrayset);
-
-      m_file.read_buffer(m_path, index, buffer.type(), buffer.ptr());
-    }
-
-    virtual size_t append (const bob::io::base::array::interface& buffer) {
-
-      if (m_newfile) {
-        //creates non-compressible, extensible dataset on HDF5 file
-        m_newfile = false;
-        m_file.create(m_path, buffer.type(), true, 0);
-        m_file.describe(m_path)[0].type.copy_to(m_type_arrayset);
-        m_file.describe(m_path)[1].type.copy_to(m_type_array);
-
-        //if m_type_all has extent == 1 on the first dimension, collapse that
-        if (m_type_array.shape[0] == 1) m_type_array = m_type_arrayset;
-      }
-
-      m_file.extend_buffer(m_path, buffer.type(), buffer.ptr());
-      ++m_size_arrayset;
-      //needs to flush the data to the file
-      return m_size_arrayset - 1; ///< index of this object in the file
-
-    }
-
-    virtual void write (const bob::io::base::array::interface& buffer) {
-
-      if (!m_newfile) {
-        boost::format f("cannot perform single (array-style) write on file/dataset at '%s' that have already been initialized -- try to use a new file");
-        f % m_filename;
-        throw std::runtime_error(f.str());
-      }
-
-      m_newfile = false;
-      m_file.create(m_path, buffer.type(), false, 0);
-
-      m_file.describe(m_path)[0].type.copy_to(m_type_arrayset);
-      m_file.describe(m_path)[1].type.copy_to(m_type_array);
-
-      //if m_type_all has extent == 1 on the first dimension, collapse that
-      if (m_type_array.shape[0] == 1) m_type_array = m_type_arrayset;
-
-      //otherwise, all must be in place...
-      m_file.write_buffer(m_path, 0, buffer.type(), buffer.ptr());
-    }
-
-  private: //representation
-
-    bob::io::base::HDF5File m_file;
-    std::string  m_filename;
-    bob::io::base::array::typeinfo m_type_array;    ///< type for reading all data at once
-    bob::io::base::array::typeinfo m_type_arrayset; ///< type for reading data by sub-arrays
-    size_t       m_size_arrayset; ///< number of arrays in arrayset mode
-    std::string  m_path; ///< default path to use
-    bool         m_newfile; ///< path check optimization
-
-    static std::string  s_codecname;
-
-};
-
-std::string HDF5ArrayFile::s_codecname = "bob.hdf5";
-
-/**
- * From this point onwards we have the registration procedure. If you are
- * looking at this file for a coding example, just follow the procedure bellow,
- * minus local modifications you may need to apply.
- */
-
-/**
- * This defines the factory method F that can create codecs of this type.
- *
- * Here are the meanings of the mode flag that should be respected by your
- * factory implementation:
- *
- * 'r': opens for reading only - no modifications can occur; it is an
- *      error to open a file that does not exist for read-only operations.
- * 'w': opens for reading and writing, but truncates the file if it
- *      exists; it is not an error to open files that do not exist with
- *      this flag.
- * 'a': opens for reading and writing - any type of modification can
- *      occur. If the file does not exist, this flag is effectively like
- *      'w'.
- *
- * Returns a newly allocated File object that can read and write data to the
- * file using a specific backend.
- *
- * @note: This method can be static.
- */
-static boost::shared_ptr<bob::io::base::File> make_file (const char* path, char mode) {
-
-  bob::io::base::HDF5File::mode_t h5mode;
-  if (mode == 'r') h5mode = bob::io::base::HDF5File::in;
-  else if (mode == 'w') h5mode = bob::io::base::HDF5File::trunc;
-  else if (mode == 'a') h5mode = bob::io::base::HDF5File::inout;
-  else throw std::runtime_error("unsupported file opening mode");
-
-  return boost::make_shared<HDF5ArrayFile>(path, h5mode);
-
-}
-
-/**
- * Takes care of codec registration per se.
- */
-static bool register_codec() {
-  static const char* description = "Hierarchical Data Format v5 (default)";
-
-  boost::shared_ptr<bob::io::base::CodecRegistry> instance =
-    bob::io::base::CodecRegistry::instance();
-
-  instance->registerExtension(".h5", description, &make_file);
-  instance->registerExtension(".hdf5", description, &make_file);
-  instance->registerExtension(".hdf", description, &make_file);
-
-  return true;
-
-}
-
-static bool codec_registered = register_codec();
diff --git a/bob/io/base/cpp/HDF5Attribute.cpp b/bob/io/base/cpp/HDF5Attribute.cpp
deleted file mode 100644
index 0a78204..0000000
--- a/bob/io/base/cpp/HDF5Attribute.cpp
+++ /dev/null
@@ -1,243 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Fri  2 Mar 08:23:47 2012
- *
- * @brief Implements attribute read/write for HDF5 files
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/format.hpp>
-
-#include <bob.core/logging.h>
-
-#include <bob.io.base/HDF5Attribute.h>
-
-static std::runtime_error status_error(const char* f, herr_t s) {
-  boost::format m("call to HDF5 C-function %s() returned error %d. HDF5 error statck follows:\n%s");
-  m % f % s % bob::io::base::format_hdf5_error();
-  return std::runtime_error(m.str());
-}
-
-bool bob::io::base::detail::hdf5::has_attribute(const boost::shared_ptr<hid_t> location,
-    const std::string& name) {
-  return H5Aexists(*location, name.c_str());
-}
-
-/**
- * Opens an "auto-destructible" HDF5 dataspace
- */
-static void delete_h5dataspace (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Sclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Sclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_memspace(const bob::io::base::HDF5Shape& s) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5dataspace));
-  *retval = H5Screate_simple(s.n(), s.get(), 0);
-  if (*retval < 0) throw status_error("H5Screate_simple", *retval);
-  return retval;
-}
-
-/**
- * Opens the memory space of attribute
- */
-static boost::shared_ptr<hid_t> get_memspace(hid_t attr) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5dataspace));
-  *retval = H5Aget_space(attr);
-  if (*retval < 0) throw status_error("H5Aget_space", *retval);
-  return retval;
-}
-
-/**
- * Auto-destructing HDF5 type
- */
-static void delete_h5type (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Tclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Tclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-/**
- * Gets datatype of attribute
- */
-static boost::shared_ptr<hid_t> get_type(hid_t attr) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5type));
-  *retval = H5Aget_type(attr);
-  if (*retval < 0) throw status_error("H5Aget_type", *retval);
-  return retval;
-}
-
-/**
- * Figures out the extents of an attribute
- */
-static bob::io::base::HDF5Shape get_extents(hid_t space) {
-  int rank = H5Sget_simple_extent_ndims(space);
-  if (rank < 0) throw status_error("H5Sget_simple_extent_ndims", rank);
-  //is at least a list of scalars, but could be a list of arrays
-  bob::io::base::HDF5Shape shape(rank);
-  herr_t status = H5Sget_simple_extent_dims(space, shape.get(), 0);
-  if (status < 0) throw status_error("H5Sget_simple_extent_dims",status);
-  return shape;
-}
-
-/**
- * Opens an "auto-destructible" HDF5 attribute
- */
-static void delete_h5attribute (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Aclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Aclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_attribute
-(const boost::shared_ptr<hid_t> location, const std::string& name,
- const bob::io::base::HDF5Type& t) {
-
-  boost::shared_ptr<hid_t> retval(new hid_t(-1),
-      std::ptr_fun(delete_h5attribute));
-
-  *retval = H5Aopen(*location, name.c_str(), H5P_DEFAULT);
-
-  if (*retval < 0) throw status_error("H5Aopen", *retval);
-
-  //checks if the opened attribute is compatible w/ the expected type
-  bob::io::base::HDF5Type expected;
-  boost::shared_ptr<hid_t> atype = get_type(*retval);
-  if (H5Tget_class(*atype) == H5T_STRING) {
-    expected = bob::io::base::HDF5Type(atype);
-  }
-  else {
-    boost::shared_ptr<hid_t> aspace = get_memspace(*retval);
-    bob::io::base::HDF5Shape shape = get_extents(*aspace);
-    expected = bob::io::base::HDF5Type(atype, shape);
-  }
-
-  if (expected != t) {
-    boost::format m("Trying to access attribute '%s' with incompatible buffer - expected `%s', but you gave me `%s'");
-    m % name % expected.str() % t.str();
-    throw std::runtime_error(m.str());
-  }
-
-  return retval;
-}
-
-void bob::io::base::detail::hdf5::delete_attribute (boost::shared_ptr<hid_t> location,
-    const std::string& name) {
-  herr_t err = H5Adelete(*location, name.c_str());
-  if (err < 0) throw status_error("H5Adelete", err);
-}
-
-void bob::io::base::detail::hdf5::read_attribute (const boost::shared_ptr<hid_t> location,
-    const std::string& name, const bob::io::base::HDF5Type& dest,
-    void* buffer) {
-  boost::shared_ptr<hid_t> attribute = open_attribute(location, name, dest);
-  herr_t err = H5Aread(*attribute, *dest.htype(), buffer);
-  if (err < 0) throw status_error("H5Aread", err);
-}
-
-void bob::io::base::detail::hdf5::gettype_attribute (const boost::shared_ptr<hid_t> location,
-    const std::string& name, bob::io::base::HDF5Type& type) {
-
-  boost::shared_ptr<hid_t> attr(new hid_t(-1),
-      std::ptr_fun(delete_h5attribute));
-
-  *attr = H5Aopen(*location, name.c_str(), H5P_DEFAULT);
-
-  if (*attr < 0) throw status_error("H5Aopen", *attr);
-
-  boost::shared_ptr<hid_t> atype = get_type(*attr);
-  if (H5Tget_class(*atype) == H5T_STRING) {
-    type = bob::io::base::HDF5Type(atype);
-  }
-  else {
-    boost::shared_ptr<hid_t> aspace = get_memspace(*attr);
-    bob::io::base::HDF5Shape shape = get_extents(*aspace);
-    type = bob::io::base::HDF5Type(atype, shape);
-  }
-}
-
-static boost::shared_ptr<hid_t> create_attribute(boost::shared_ptr<hid_t> loc,
-    const std::string& name, const bob::io::base::HDF5Type& t,
-    boost::shared_ptr<hid_t> space) {
-
-  boost::shared_ptr<hid_t> retval(new hid_t(-1),
-      std::ptr_fun(delete_h5attribute));
-
-  *retval = H5Acreate2(*loc, name.c_str(), *t.htype(), *space, H5P_DEFAULT,
-      H5P_DEFAULT);
-
-  if (*retval < 0) throw status_error("H5Acreate", *retval);
-  return retval;
-}
-
-void bob::io::base::detail::hdf5::write_attribute (boost::shared_ptr<hid_t> location,
-    const std::string& name, const bob::io::base::HDF5Type& dest, const void* buffer)
-{
-  boost::shared_ptr<hid_t> dataspace;
-  //strings have to be treated slightly differently
-  if (dest.type() == bob::io::base::s) {
-    hsize_t strings = 1;
-    HDF5Shape shape(1, &strings);
-    dataspace = open_memspace(shape);
-  }
-  else {
-    dataspace = open_memspace(dest.shape());
-  }
-
-  if (bob::io::base::detail::hdf5::has_attribute(location, name)) bob::io::base::detail::hdf5::delete_attribute(location, name);
-  boost::shared_ptr<hid_t> attribute =
-    create_attribute(location, name, dest, dataspace);
-
-  /* Write the attribute data. */
-  herr_t err = H5Awrite(*attribute, *dest.htype(), buffer);
-  if (err < 0) throw status_error("H5Awrite", err);
-}
-
-static herr_t attr_iterator (hid_t obj, const char* name, const H5A_info_t*,
-    void* cookie) {
-  std::map<std::string, bob::io::base::HDF5Type>& dict =
-    *static_cast<std::map<std::string, bob::io::base::HDF5Type>*>(cookie);
-
-  boost::shared_ptr<hid_t> attr(new hid_t(-1),
-      std::ptr_fun(delete_h5attribute));
-
-  *attr = H5Aopen(obj, name, H5P_DEFAULT);
-
-  if (*attr < 0) throw status_error("H5Aopen", *attr);
-
-  boost::shared_ptr<hid_t> atype = get_type(*attr);
-  if (H5Tget_class(*atype) == H5T_STRING) {
-    dict[name] = bob::io::base::HDF5Type(atype);
-  }
-  else {
-    boost::shared_ptr<hid_t> aspace = get_memspace(*attr);
-    bob::io::base::HDF5Shape shape = get_extents(*aspace);
-    dict[name] = bob::io::base::HDF5Type(atype, shape);
-  }
-
-  return 0;
-}
-
-void bob::io::base::detail::hdf5::list_attributes(boost::shared_ptr<hid_t> location,
-    std::map<std::string, bob::io::base::HDF5Type>& attributes) {
-  hsize_t offset=0;
-  H5Aiterate2(*location, H5_INDEX_NAME, H5_ITER_NATIVE, &offset, attr_iterator,
-      static_cast<void*>(&attributes));
-}
diff --git a/bob/io/base/cpp/HDF5Dataset.cpp b/bob/io/base/cpp/HDF5Dataset.cpp
deleted file mode 100644
index 9fb6a0a..0000000
--- a/bob/io/base/cpp/HDF5Dataset.cpp
+++ /dev/null
@@ -1,612 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed 29 Feb 17:51:21 2012
- *
- * @brief Implementation of the Dataset class
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/format.hpp>
-#include <boost/make_shared.hpp>
-#include <boost/shared_array.hpp>
-
-#include <bob.core/logging.h>
-
-#include <bob.io.base/HDF5Utils.h>
-#include <bob.io.base/HDF5Group.h>
-#include <bob.io.base/HDF5Dataset.h>
-
-static std::runtime_error status_error(const char* f, herr_t s) {
-  boost::format m("call to HDF5 C-function %s() returned error %d. HDF5 error statck follows:\n%s");
-  m % f % s % bob::io::base::format_hdf5_error();
-  return std::runtime_error(m.str());
-}
-
-/**
- * Opens an "auto-destructible" HDF5 dataset
- */
-static void delete_h5dataset (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Dclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Dclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_dataset
-(boost::shared_ptr<bob::io::base::detail::hdf5::Group>& par, const std::string& name) {
-  if (!name.size() || name == "." || name == "..") {
-    boost::format m("Cannot open dataset with illegal name `%s' at `%s:%s'");
-    m % name % par->file()->filename() % par->path();
-    throw std::runtime_error(m.str());
-  }
-
-  boost::shared_ptr<hid_t> retval(new hid_t(-1),
-      std::ptr_fun(delete_h5dataset));
-  *retval = H5Dopen2(*par->location(), name.c_str(), H5P_DEFAULT);
-  if (*retval < 0) {
-    throw status_error("H5Dopen2", *retval);
-  }
-  return retval;
-}
-
-/**
- * Opens an "auto-destructible" HDF5 datatype
- */
-static void delete_h5datatype (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Tclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Tclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_datatype
-(const boost::shared_ptr<hid_t>& ds) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1),
-      std::ptr_fun(delete_h5datatype));
-  *retval = H5Dget_type(*ds);
-  if (*retval < 0) {
-    throw status_error("H5Dget_type", *retval);
-  }
-  return retval;
-}
-
-/**
- * Opens an "auto-destructible" HDF5 property list
- */
-static void delete_h5plist (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Pclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Pclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_plist(hid_t classid) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5plist));
-  *retval = H5Pcreate(classid);
-  if (*retval < 0) {
-    throw status_error("H5Pcreate", *retval);
-  }
-  return retval;
-}
-
-/**
- * Opens an "auto-destructible" HDF5 dataspace
- */
-static void delete_h5dataspace (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Sclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Sclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_filespace
-(const boost::shared_ptr<hid_t>& ds) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5dataspace));
-  *retval = H5Dget_space(*ds);
-  if (*retval < 0) throw status_error("H5Dget_space", *retval);
-  return retval;
-}
-
-static boost::shared_ptr<hid_t> open_memspace(const bob::io::base::HDF5Shape& sh) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5dataspace));
-  *retval = H5Screate_simple(sh.n(), sh.get(), 0);
-  if (*retval < 0) throw status_error("H5Screate_simple", *retval);
-  return retval;
-}
-
-static void set_memspace(boost::shared_ptr<hid_t> s, const bob::io::base::HDF5Shape& sh) {
-  herr_t status = H5Sset_extent_simple(*s, sh.n(), sh.get(), 0);
-  if (status < 0) throw status_error("H5Sset_extent_simple", status);
-}
-
-/**
- * Figures out if a dataset is expandible
- */
-static bool is_extensible(boost::shared_ptr<hid_t>& space) {
-
-  //has unlimited size on first dimension?
-  int rank = H5Sget_simple_extent_ndims(*space);
-  if (rank < 0) throw status_error("H5Sget_simple_extent_ndims", rank);
-
-  bob::io::base::HDF5Shape maxshape(rank);
-  herr_t status = H5Sget_simple_extent_dims(*space, 0, maxshape.get());
-  if (status < 0) throw status_error("H5Sget_simple_extent_dims",status);
-
-  return (maxshape[0] == H5S_UNLIMITED);
-}
-
-/**
- * Figures out the extents of a dataset
- */
-static bob::io::base::HDF5Shape get_extents(boost::shared_ptr<hid_t>& space) {
-  int rank = H5Sget_simple_extent_ndims(*space);
-  if (rank < 0) throw status_error("H5Sget_simple_extent_ndims", rank);
-  //is at least a list of scalars, but could be a list of arrays
-  bob::io::base::HDF5Shape shape(rank);
-  herr_t status = H5Sget_simple_extent_dims(*space, shape.get(), 0);
-  if (status < 0) throw status_error("H5Sget_simple_extent_dims",status);
-  return shape;
-}
-
-/**
- * Creates the extensive list of compatible types for each of possible ways to
- * read/write this dataset.
- */
-static void reset_compatibility_list(boost::shared_ptr<hid_t>& space,
-    const bob::io::base::HDF5Type& file_base, std::vector<bob::io::base::HDF5Descriptor>& descr) {
-
-  if (!file_base.shape()) throw std::runtime_error("empty HDF5 dataset");
-
-  descr.clear();
-
-  switch (file_base.shape().n()) {
-
-    case 1: ///< file type has 1 dimension
-      descr.push_back(bob::io::base::HDF5Descriptor(file_base.type(),
-            file_base.shape()[0], is_extensible(space)));
-      break;
-
-    case 2:
-    case 3:
-    case 4:
-    case 5:
-      {
-        bob::io::base::HDF5Shape alt = file_base.shape();
-        alt <<= 1; ///< contract shape
-        descr.push_back(bob::io::base::HDF5Descriptor(bob::io::base::HDF5Type(file_base.type(), alt),
-              file_base.shape()[0], is_extensible(space)).subselect());
-      }
-      break;
-
-    default:
-      {
-        boost::format m("%d exceeds the number of supported dimensions");
-        m % file_base.shape().n();
-        throw std::runtime_error(m.str());
-      }
-  }
-
-  //can always read the data as a single, non-expandible array
-  descr.push_back(bob::io::base::HDF5Descriptor(file_base, 1, false));
-}
-
-bob::io::base::detail::hdf5::Dataset::Dataset(boost::shared_ptr<Group> parent,
-    const std::string& name) :
-  m_parent(parent),
-  m_name(name),
-  m_id(open_dataset(parent, name)),
-  m_dt(open_datatype(m_id)),
-  m_filespace(open_filespace(m_id)),
-  m_descr(),
-  m_memspace()
-{
-  bob::io::base::HDF5Type type(m_dt, get_extents(m_filespace));
-  reset_compatibility_list(m_filespace, type, m_descr);
-
-  //strings have to be treated slightly differently
-  if (H5Tget_class(*m_dt) == H5T_STRING) {
-    hsize_t strings = 1;
-    HDF5Shape shape(1, &strings);
-    m_memspace = open_memspace(shape);
-  }
-  else {
-    m_memspace = open_memspace(m_descr[0].type.shape());
-  }
-}
-
-/**
- * Creates and writes an "empty" Dataset in an existing file.
- */
-static void create_dataset (boost::shared_ptr<bob::io::base::detail::hdf5::Group> par,
- const std::string& name, const bob::io::base::HDF5Type& type, bool list,
- size_t compression) {
-
-  if (!name.size() || name == "." || name == "..") {
-    boost::format m("Cannot create dataset with illegal name `%s' at `%s:%s'");
-    m % name % par->file()->filename() % par->path();
-    throw std::runtime_error(m.str());
-  }
-
-  bob::io::base::HDF5Shape xshape(type.shape());
-
-  if (list) { ///< if it is a list, add and extra dimension as dimension 0
-    xshape = type.shape();
-    xshape >>= 1;
-    xshape[0] = 0; ///< no elements for the time being
-  }
-
-  bob::io::base::HDF5Shape maxshape(xshape);
-  if (list) maxshape[0] = H5S_UNLIMITED; ///< can expand forever
-
-  //creates the data space.
-  boost::shared_ptr<hid_t> space(new hid_t(-1),
-      std::ptr_fun(delete_h5dataspace));
-  *space = H5Screate_simple(xshape.n(), xshape.get(), maxshape.get());
-  if (*space < 0) throw status_error("H5Screate_simple", *space);
-
-  //creates the property list saying we need the data to be chunked if this is
-  //supposed to be a list -- HDF5 only supports expandability like this.
-  boost::shared_ptr<hid_t> dcpl = open_plist(H5P_DATASET_CREATE);
-
-  //according to the HDF5 manual, chunks have to have the same rank as the
-  //array shape.
-  bob::io::base::HDF5Shape chunking(xshape);
-  chunking[0] = 1;
-  if (list || compression) { ///< note: compression requires chunking
-    herr_t status = H5Pset_chunk(*dcpl, chunking.n(), chunking.get());
-    if (status < 0) throw status_error("H5Pset_chunk", status);
-  }
-
-  //if the user has decided to compress the dataset, do it with gzip.
-  if (compression) {
-    if (compression > 9) compression = 9;
-    herr_t status = H5Pset_deflate(*dcpl, compression);
-    if (status < 0) throw status_error("H5Pset_deflate", status);
-  }
-
-  //our link creation property list for HDF5
-  boost::shared_ptr<hid_t> lcpl = open_plist(H5P_LINK_CREATE);
-  herr_t status = H5Pset_create_intermediate_group(*lcpl, 1); //1 == true
-  if (status < 0)
-    throw status_error("H5Pset_create_intermediate_group", status);
-
-  //please note that we don't define the fill value as in the example, but
-  //according to the HDF5 documentation, this value is set to zero by default.
-
-  boost::shared_ptr<hid_t> cls = type.htype();
-
-  //finally create the dataset on the file.
-  boost::shared_ptr<hid_t> dataset(new hid_t(-1),
-      std::ptr_fun(delete_h5dataset));
-  *dataset = H5Dcreate2(*par->location(), name.c_str(),
-      *cls, *space, *lcpl, *dcpl, H5P_DEFAULT);
-
-  if (*dataset < 0) throw status_error("H5Dcreate2", *dataset);
-}
-
-/**
- * Creates and writes an "empty" std::string Dataset in an existing file.
- */
-static void create_string_dataset (boost::shared_ptr<bob::io::base::detail::hdf5::Group> par,
- const std::string& name, const bob::io::base::HDF5Type& type, size_t compression) {
-
-  if (!name.size() || name == "." || name == "..") {
-    boost::format m("Cannot create dataset with illegal name `%s' at `%s:%s'");
-    m % name % par->file()->filename() % par->path();
-    throw std::runtime_error(m.str());
-  }
-
-  //there can be only 1 string in a string dataset (for the time being)
-  hsize_t strings = 1;
-  bob::io::base::HDF5Shape xshape(1, &strings);
-
-  //creates the data space.
-  boost::shared_ptr<hid_t> space(new hid_t(-1),
-      std::ptr_fun(delete_h5dataspace));
-  *space = H5Screate_simple(xshape.n(), xshape.get(), xshape.get());
-  if (*space < 0) throw status_error("H5Screate_simple", *space);
-
-  //creates the property list saying we need the data to be chunked if this is
-  //supposed to be a list -- HDF5 only supports expandability like this.
-  boost::shared_ptr<hid_t> dcpl = open_plist(H5P_DATASET_CREATE);
-
-  //if the user has decided to compress the dataset, do it with gzip.
-  if (compression) {
-    if (compression > 9) compression = 9;
-    herr_t status = H5Pset_deflate(*dcpl, compression);
-    if (status < 0) throw status_error("H5Pset_deflate", status);
-  }
-
-  //our link creation property list for HDF5
-  boost::shared_ptr<hid_t> lcpl = open_plist(H5P_LINK_CREATE);
-  herr_t status = H5Pset_create_intermediate_group(*lcpl, 1); //1 == true
-  if (status < 0)
-    throw status_error("H5Pset_create_intermediate_group", status);
-
-  //please note that we don't define the fill value as in the example, but
-  //according to the HDF5 documentation, this value is set to zero by default.
-
-  boost::shared_ptr<hid_t> cls = type.htype();
-
-  //finally create the dataset on the file.
-  boost::shared_ptr<hid_t> dataset(new hid_t(-1),
-      std::ptr_fun(delete_h5dataset));
-  *dataset = H5Dcreate2(*par->location(), name.c_str(),
-      *cls, *space, *lcpl, *dcpl, H5P_DEFAULT);
-
-  if (*dataset < 0) throw status_error("H5Dcreate2", *dataset);
-}
-
-bob::io::base::detail::hdf5::Dataset::Dataset(boost::shared_ptr<Group> parent,
-    const std::string& name, const bob::io::base::HDF5Type& type,
-    bool list, size_t compression):
-  m_parent(parent),
-  m_name(name),
-  m_id(),
-  m_dt(),
-  m_filespace(),
-  m_descr(),
-  m_memspace()
-{
-  //First, we test to see if we can find the named dataset.
-  bob::io::base::DefaultHDF5ErrorStack->mute();
-  hid_t set_id = H5Dopen2(*parent->location(),m_name.c_str(),H5P_DEFAULT);
-  bob::io::base::DefaultHDF5ErrorStack->unmute();
-
-  if (set_id < 0) {
-    if (type.type() == bob::io::base::s)
-      create_string_dataset(parent, m_name, type, compression);
-    else
-      create_dataset(parent, m_name, type, list, compression);
-  }
-  else H5Dclose(set_id); //close it, will re-open it properly
-
-  m_id = open_dataset(parent, m_name);
-  m_dt = open_datatype(m_id);
-  m_filespace = open_filespace(m_id);
-  bob::io::base::HDF5Type file_type(m_dt, get_extents(m_filespace));
-  reset_compatibility_list(m_filespace, file_type, m_descr);
-
-  //strings have to be treated slightly differently
-  if (H5Tget_class(*m_dt) == H5T_STRING) {
-    hsize_t strings = 1;
-    HDF5Shape shape(1, &strings);
-    m_memspace = open_memspace(shape);
-  }
-  else {
-    m_memspace = open_memspace(m_descr[0].type.shape());
-  }
-}
-
-bob::io::base::detail::hdf5::Dataset::~Dataset() { }
-
-size_t bob::io::base::detail::hdf5::Dataset::size () const {
-  return m_descr[0].size;
-}
-
-size_t bob::io::base::detail::hdf5::Dataset::size (const bob::io::base::HDF5Type& type) const {
-  for (size_t k=0; k<m_descr.size(); ++k) {
-    if (m_descr[k].type == type) return m_descr[k].size;
-  }
-  boost::format m("trying to read or write `%s' at `%s' that only accepts `%s'");
-  m % type.str() % url() % m_descr[0].type.str();
-  throw std::runtime_error(m.str());
-}
-
-const boost::shared_ptr<bob::io::base::detail::hdf5::Group> bob::io::base::detail::hdf5::Dataset::parent() const {
-  return m_parent.lock();
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::Group> bob::io::base::detail::hdf5::Dataset::parent() {
-  return m_parent.lock();
-}
-
-const std::string& bob::io::base::detail::hdf5::Dataset::filename() const {
-  return parent()->filename();
-}
-
-std::string bob::io::base::detail::hdf5::Dataset::url() const {
-  return filename() + ":" + path();
-}
-
-std::string bob::io::base::detail::hdf5::Dataset::path() const {
-  return parent()->path() + "/" + m_name;
-}
-
-const boost::shared_ptr<bob::io::base::detail::hdf5::File> bob::io::base::detail::hdf5::Dataset::file() const {
-  return parent()->file();
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::File> bob::io::base::detail::hdf5::Dataset::file() {
-  return parent()->file();
-}
-
-/**
- * Locates a compatible type or returns end().
- */
-static std::vector<bob::io::base::HDF5Descriptor>::iterator
-  find_type_index(std::vector<bob::io::base::HDF5Descriptor>& descr,
-      const bob::io::base::HDF5Type& user_type) {
-  std::vector<bob::io::base::HDF5Descriptor>::iterator it = descr.begin();
-  for (; it != descr.end(); ++it) {
-    if (it->type == user_type) break;
-  }
-  return it;
-}
-
-std::vector<bob::io::base::HDF5Descriptor>::iterator
-bob::io::base::detail::hdf5::Dataset::select (size_t index, const bob::io::base::HDF5Type& dest) {
-
-  //finds compatibility type
-  std::vector<bob::io::base::HDF5Descriptor>::iterator it = find_type_index(m_descr, dest);
-
-  //if we cannot find a compatible type, we throw
-  if (it == m_descr.end()) {
-    boost::format m("trying to read or write `%s' at `%s' that only accepts `%s'");
-    m % dest.str() % url() % m_descr[0].type.str();
-    throw std::runtime_error(m.str());
-  }
-
-  //checks indexing
-  if (index >= it->size) {
-    boost::format m("trying to access element %d in Dataset '%s' that only contains %d elements");
-    m % index % url() % it->size;
-    throw std::runtime_error(m.str());
-  }
-
-  set_memspace(m_memspace, it->type.shape());
-
-  it->hyperslab_start[0] = index;
-
-  herr_t status = H5Sselect_hyperslab(*m_filespace, H5S_SELECT_SET,
-      it->hyperslab_start.get(), 0, it->hyperslab_count.get(), 0);
-  if (status < 0) throw status_error("H5Sselect_hyperslab", status);
-
-  return it;
-}
-
-void bob::io::base::detail::hdf5::Dataset::read_buffer (size_t index, const bob::io::base::HDF5Type& dest, void* buffer) {
-
-  std::vector<bob::io::base::HDF5Descriptor>::iterator it = select(index, dest);
-
-  herr_t status = H5Dread(*m_id, *it->type.htype(),
-      *m_memspace, *m_filespace, H5P_DEFAULT, buffer);
-
-  if (status < 0) throw status_error("H5Dread", status);
-}
-
-void bob::io::base::detail::hdf5::Dataset::write_buffer (size_t index, const bob::io::base::HDF5Type& dest,
-    const void* buffer) {
-
-  std::vector<bob::io::base::HDF5Descriptor>::iterator it = select(index, dest);
-
-  herr_t status = H5Dwrite(*m_id, *it->type.htype(),
-      *m_memspace, *m_filespace, H5P_DEFAULT, buffer);
-
-  if (status < 0) throw status_error("H5Dwrite", status);
-}
-
-void bob::io::base::detail::hdf5::Dataset::extend_buffer (const bob::io::base::HDF5Type& dest, const void* buffer) {
-
-  //finds compatibility type
-  std::vector<bob::io::base::HDF5Descriptor>::iterator it = find_type_index(m_descr, dest);
-
-  //if we cannot find a compatible type, we throw
-  if (it == m_descr.end()) {
-    boost::format m("trying to read or write `%s' at `%s' that only accepts `%s'");
-    m % dest.str() % url() % m_descr[0].type.str();
-    throw std::runtime_error(m.str());
-  }
-
-  if (!it->expandable) {
-    boost::format m("trying to append to '%s' that is not expandible");
-    m % url();
-    throw std::runtime_error(m.str());
-  }
-
-  //if it is expandible, try expansion
-  bob::io::base::HDF5Shape tmp(it->type.shape());
-  tmp >>= 1;
-  tmp[0] = it->size + 1;
-  herr_t status = H5Dset_extent(*m_id, tmp.get());
-  if (status < 0) throw status_error("H5Dset_extent", status);
-
-  //if expansion succeeded, update all compatible types
-  for (size_t k=0; k<m_descr.size(); ++k) {
-    if (m_descr[k].expandable) { //updated only the length
-      m_descr[k].size += 1;
-    }
-    else { //not expandable, update the shape/count for a straight read/write
-      m_descr[k].type.shape()[0] += 1;
-      m_descr[k].hyperslab_count[0] += 1;
-    }
-  }
-
-  m_filespace = open_filespace(m_id); //update filespace
-
-  write_buffer(tmp[0]-1, dest, buffer);
-}
-
-void bob::io::base::detail::hdf5::Dataset::gettype_attribute(const std::string& name,
-          bob::io::base::HDF5Type& type) const {
-  bob::io::base::detail::hdf5::gettype_attribute(m_id, name, type);
-}
-
-bool bob::io::base::detail::hdf5::Dataset::has_attribute(const std::string& name) const {
-  return bob::io::base::detail::hdf5::has_attribute(m_id, name);
-}
-
-void bob::io::base::detail::hdf5::Dataset::delete_attribute (const std::string& name) {
-  bob::io::base::detail::hdf5::delete_attribute(m_id, name);
-}
-
-void bob::io::base::detail::hdf5::Dataset::read_attribute (const std::string& name,
-    const bob::io::base::HDF5Type& dest_type, void* buffer) const {
-  bob::io::base::detail::hdf5::read_attribute(m_id, name, dest_type, buffer);
-}
-
-void bob::io::base::detail::hdf5::Dataset::write_attribute (const std::string& name,
-    const bob::io::base::HDF5Type& dest_type, const void* buffer) {
-  bob::io::base::detail::hdf5::write_attribute(m_id, name, dest_type, buffer);
-}
-
-void bob::io::base::detail::hdf5::Dataset::list_attributes(std::map<std::string, bob::io::base::HDF5Type>& attributes) const {
-  bob::io::base::detail::hdf5::list_attributes(m_id, attributes);
-}
-
-template <> void bob::io::base::detail::hdf5::Dataset::read<std::string>(size_t index, std::string& value) {
-  if (index != 0) throw std::runtime_error("Bob's HDF5 bindings do not (yet) support string vectors - reading something on position > 0 is therefore not possible");
-
-  size_t str_size = H5Tget_size(*m_dt); ///< finds out string size
-  boost::shared_array<char> storage(new char[str_size+1]);
-  storage[str_size] = 0; ///< null termination
-
-  herr_t status = H5Dread(*m_id, *m_dt, *m_memspace, *m_filespace, H5P_DEFAULT, storage.get());
-  if (status < 0) throw status_error("H5Dread", status);
-
-  value = storage.get();
-}
-
-template <> void bob::io::base::detail::hdf5::Dataset::replace<std::string>(size_t index, const std::string& value) {
-  if (index != 0) throw std::runtime_error("Bob's HDF5 bindings do not (yet) support string vectors - indexing something on position > 0 is therefore not possible");
-
-  herr_t status = H5Dwrite(*m_id, *m_dt, *m_memspace, *m_filespace, H5P_DEFAULT, value.c_str());
-  if (status < 0) throw status_error("H5Dwrite", status);
-}
-
-template <> void bob::io::base::detail::hdf5::Dataset::add<std::string>(const std::string& value) {
-  herr_t status = H5Dwrite(*m_id, *m_dt, *m_memspace, *m_filespace, H5P_DEFAULT, value.c_str());
-  if (status < 0) throw status_error("H5Dwrite", status);
-}
-
-template <> void bob::io::base::detail::hdf5::Dataset::set_attribute<std::string>(const std::string& name, const std::string& v) {
-  bob::io::base::HDF5Type dest_type(v);
-  write_attribute(name, dest_type, reinterpret_cast<const void*>(v.c_str()));
-}
-
-template <> std::string bob::io::base::detail::hdf5::Dataset::get_attribute(const std::string& name) const {
-  HDF5Type type;
-  gettype_attribute(name, type);
-  boost::shared_array<char> v(new char[type.shape()[0]+1]);
-  v[type.shape()[0]] = 0; ///< null termination
-  read_attribute(name, type, reinterpret_cast<void*>(v.get()));
-  std::string retval(v.get());
-  return retval;
-}
diff --git a/bob/io/base/cpp/HDF5File.cpp b/bob/io/base/cpp/HDF5File.cpp
deleted file mode 100644
index 549069f..0000000
--- a/bob/io/base/cpp/HDF5File.cpp
+++ /dev/null
@@ -1,294 +0,0 @@
-/**
- * @date Wed Jun 22 17:50:08 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Implementation of the read/write functionality for HDF5 files
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/format.hpp>
-
-#include <bob.io.base/HDF5File.h>
-
-static unsigned int getH5Access (bob::io::base::HDF5File::mode_t v) {
-  switch(v) {
-    case 0: return H5F_ACC_RDONLY;
-    case 1: return H5F_ACC_RDWR;
-    case 2: return H5F_ACC_TRUNC;
-    case 4: return H5F_ACC_EXCL;
-    default:
-            {
-              boost::format m("Trying to use an undefined access mode '%d'");
-              m % v;
-              throw std::runtime_error(m.str());
-            }
-  }
-}
-
-bob::io::base::HDF5File::HDF5File(const std::string& filename, mode_t mode):
-  m_file(new bob::io::base::detail::hdf5::File(filename, getH5Access(mode))),
-  m_cwd(m_file->root()) ///< we start by looking at the root directory
-{
-}
-
-bob::io::base::HDF5File::HDF5File(const std::string& filename, const char mode):
-m_file(),
-m_cwd()
-{
-  bob::io::base::HDF5File::mode_t new_mode = bob::io::base::HDF5File::inout;
-  switch (mode){
-    case 'r': new_mode = bob::io::base::HDF5File::in; break;
-    case 'a': new_mode = bob::io::base::HDF5File::inout; break;
-    case 'w': new_mode = bob::io::base::HDF5File::trunc; break;
-    case 'x': new_mode = bob::io::base::HDF5File::excl; break;
-    default:
-      throw std::runtime_error("Supported flags are 'r' (read-only), 'a' (read/write/append), 'w' (read/write/truncate) or 'x' (read/write/exclusive)");
-  }
-  m_file.reset(new bob::io::base::detail::hdf5::File(filename, getH5Access(new_mode)));
-  m_cwd = m_file->root(); ///< we start by looking at the root directory
-
-}
-
-bob::io::base::HDF5File::HDF5File(const bob::io::base::HDF5File& other_file):
-  m_file(other_file.m_file),
-  m_cwd(other_file.m_cwd)
-{
-}
-
-bob::io::base::HDF5File::~HDF5File() {
-}
-
-bob::io::base::HDF5File& bob::io::base::HDF5File::operator =(const bob::io::base::HDF5File& other_file){
-  m_file = other_file.m_file;
-  m_cwd = other_file.m_cwd;
-  return *this;
-}
-
-void bob::io::base::HDF5File::close() {
-  m_file.reset();
-  m_cwd.reset();
-}
-
-void bob::io::base::HDF5File::cd(const std::string& path) {
-  check_open();
-  m_cwd = m_cwd->cd(path);
-}
-
-bool bob::io::base::HDF5File::hasGroup(const std::string& path) {
-  check_open();
-  return m_cwd->has_group(path);
-}
-
-void bob::io::base::HDF5File::createGroup(const std::string& path) {
-  check_open();
-  if (!m_file->writable()) {
-    boost::format m("cannot create group '%s' at path '%s' of file '%s' because it is not writeable");
-    m % path % m_cwd->path() % m_file->filename();
-    throw std::runtime_error(m.str());
-  }
-  m_cwd->create_group(path);
-}
-
-std::string bob::io::base::HDF5File::cwd() const {
-  check_open();
-  return m_cwd->path();
-}
-
-bool bob::io::base::HDF5File::contains (const std::string& path) const {
-  check_open();
-  return m_cwd->has_dataset(path);
-}
-
-const std::vector<bob::io::base::HDF5Descriptor>& bob::io::base::HDF5File::describe
-(const std::string& path) const {
-  check_open();
-  return (*m_cwd)[path]->m_descr;
-}
-
-void bob::io::base::HDF5File::unlink (const std::string& path) {
-  check_open();
-  if (!m_file->writable()) {
-    boost::format m("cannot remove dataset at path '%s' of file '%s' because it is not writeable");
-    m % path % m_cwd->path() % m_file->filename();
-    throw std::runtime_error(m.str());
-  }
-  m_cwd->remove_dataset(path);
-}
-
-void bob::io::base::HDF5File::rename (const std::string& from, const std::string& to) {
-  check_open();
-  if (!m_file->writable()) {
-    boost::format m("cannot rename dataset '%s' -> '%s' at path '%s' of file '%s' because it is not writeable");
-    m % from % to % m_cwd->path() % m_file->filename();
-    throw std::runtime_error(m.str());
-  }
-  m_cwd->rename_dataset(from, to);
-  std::string current_path = m_cwd->path();
-  m_file->reset(); //re-read the whole structure
-  m_cwd = m_file->root();
-  m_cwd = m_cwd->cd(current_path); //go back to the path we were before
-}
-
-void bob::io::base::HDF5File::copy (HDF5File& other) {
-  check_open();
-  if (!m_file->writable()) {
-    boost::format m("cannot copy data of file '%s' to path '%s' of file '%s' because it is not writeable");
-    m % other.filename() % m_cwd->path() % m_file->filename();
-    throw std::runtime_error(m.str());
-  }
-
-  //groups
-  typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Group> > group_map_type;
-  const group_map_type& group_map = other.m_file->root()->groups();
-  for (group_map_type::const_iterator it=group_map.begin();
-      it != group_map.end(); ++it) {
-    m_cwd->copy_group(it->second, it->first);
-  }
-
-  //datasets
-  typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> > dataset_map_type;
-  const dataset_map_type& dataset_map = other.m_file->root()->datasets();
-  for (dataset_map_type::const_iterator it=dataset_map.begin();
-      it != dataset_map.end(); ++it) {
-    m_cwd->copy_dataset(it->second, it->first);
-  }
-}
-
-void bob::io::base::HDF5File::create (const std::string& path, const bob::io::base::HDF5Type& type,
-    bool list, size_t compression) {
-  check_open();
-  if (!m_file->writable()) {
-    boost::format m("cannot create dataset '%s' at path '%s' of file '%s' because it is not writeable");
-    m % path % m_cwd->path() % m_file->filename();
-    throw std::runtime_error(m.str());
-  }
-  if (!contains(path)) m_cwd->create_dataset(path, type, list, compression);
-  else (*m_cwd)[path]->size(type);
-}
-
-void bob::io::base::HDF5File::read_buffer (const std::string& path, size_t pos,
-    const bob::io::base::HDF5Type& type, void* buffer) const {
-  check_open();
-  (*m_cwd)[path]->read_buffer(pos, type, buffer);
-}
-
-void bob::io::base::HDF5File::write_buffer (const std::string& path,
-    size_t pos, const bob::io::base::HDF5Type& type, const void* buffer) {
-  check_open();
-  if (!m_file->writable()) {
-    boost::format m("cannot write to object '%s' at path '%s' of file '%s' because it is not writeable");
-    m % path % m_cwd->path() % m_file->filename();
-    throw std::runtime_error(m.str());
-  }
-  (*m_cwd)[path]->write_buffer(pos, type, buffer);
-}
-
-void bob::io::base::HDF5File::extend_buffer(const std::string& path,
-    const bob::io::base::HDF5Type& type, const void* buffer) {
-  check_open();
-  if (!m_file->writable()) {
-    boost::format m("cannot extend object '%s' at path '%s' of file '%s' because the file is not writeable");
-    m % path % m_cwd->path() % m_file->filename();
-    throw std::runtime_error(m.str());
-  }
-  (*m_cwd)[path]->extend_buffer(type, buffer);
-}
-
-bool bob::io::base::HDF5File::hasAttribute(const std::string& path,
-    const std::string& name) const {
-  check_open();
-  if (m_cwd->has_dataset(path)) {
-    return (*m_cwd)[path]->has_attribute(name);
-  }
-  else if (m_cwd->has_group(path)) {
-    return m_cwd->cd(path)->has_attribute(name);
-  }
-  return false;
-}
-
-void bob::io::base::HDF5File::getAttributeType(const std::string& path,
-    const std::string& name, HDF5Type& type) const {
-  check_open();
-  if (m_cwd->has_dataset(path)) {
-    (*m_cwd)[path]->gettype_attribute(name, type);
-  }
-  else if (m_cwd->has_group(path)) {
-    m_cwd->cd(path)->gettype_attribute(name, type);
-  }
-  else {
-    boost::format m("cannot read attribute '%s' type at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-    m % name % path % m_file->filename() % m_cwd->path();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::HDF5File::deleteAttribute(const std::string& path,
-    const std::string& name) {
-  check_open();
-  if (m_cwd->has_dataset(path)) {
-    (*m_cwd)[path]->delete_attribute(name);
-  }
-  else if (m_cwd->has_group(path)) {
-    m_cwd->cd(path)->delete_attribute(name);
-  }
-  else {
-    boost::format m("cannot delete attribute '%s' at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-    m % name % path % m_file->filename() % m_cwd->path();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::HDF5File::listAttributes(const std::string& path,
-    std::map<std::string, bob::io::base::HDF5Type>& attributes) const {
-  check_open();
-  if (m_cwd->has_dataset(path)) {
-    (*m_cwd)[path]->list_attributes(attributes);
-  }
-  else if (m_cwd->has_group(path)) {
-    m_cwd->cd(path)->list_attributes(attributes);
-  }
-  else {
-    boost::format m("cannot list attributes at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-    m % path % m_file->filename() % m_cwd->path();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::HDF5File::read_attribute(const std::string& path,
-    const std::string& name, const bob::io::base::HDF5Type& type, void* buffer) const {
-  check_open();
-  if (m_cwd->has_dataset(path)) {
-    (*m_cwd)[path]->read_attribute(name, type, buffer);
-  }
-  else if (m_cwd->has_group(path)) {
-    m_cwd->cd(path)->read_attribute(name, type, buffer);
-  }
-  else {
-    boost::format m("cannot get attribute '%s' at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-    m % name % path % m_file->filename() % m_cwd->path();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::HDF5File::write_attribute(const std::string& path,
-    const std::string& name, const bob::io::base::HDF5Type& type, const void* buffer) {
-  check_open();
-  if (m_cwd->has_dataset(path)) {
-    (*m_cwd)[path]->write_attribute(name, type, buffer);
-  }
-  else if (m_cwd->has_group(path)) {
-    m_cwd->cd(path)->write_attribute(name, type, buffer);
-  }
-  else {
-    boost::format m("cannot set attribute '%s' at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-    m % name % path % m_file->filename() % m_cwd->path();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::HDF5File::check_open() const{
-  if (!m_cwd || ! m_file){
-    throw std::runtime_error("The file is not opened yet / any more");
-  }
-}
diff --git a/bob/io/base/cpp/HDF5Group.cpp b/bob/io/base/cpp/HDF5Group.cpp
deleted file mode 100644
index 6c39b18..0000000
--- a/bob/io/base/cpp/HDF5Group.cpp
+++ /dev/null
@@ -1,560 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed 29 Feb 17:24:10 2012
- *
- * @brief Implements HDF5 groups.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/make_shared.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/filesystem.hpp>
-#include <boost/format.hpp>
-#include <boost/algorithm/string.hpp>
-
-#include <bob.core/logging.h>
-
-#include <bob.io.base/HDF5Group.h>
-#include <bob.io.base/HDF5Utils.h>
-
-/**
- * Creates an "auto-destructible" HDF5 Group
- */
-static void delete_h5g (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Gclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Gclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> create_new_group(boost::shared_ptr<hid_t> p,
-    const std::string& name) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5g));
-  *retval = H5Gcreate2(*p, name.c_str(), H5P_DEFAULT, H5P_DEFAULT,
-      H5P_DEFAULT);
-  if (*retval < 0) {
-    boost::format m("call to HDF5 C-function H5Gcreate2() returned error %d. HDF5 error statck follows:\n%s");
-    m % *retval % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  return retval;
-}
-
-static boost::shared_ptr<hid_t> open_group(boost::shared_ptr<hid_t> g,
-    const char* name) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5g));
-  *retval = H5Gopen2(*g, name, H5P_DEFAULT);
-  if (*retval < 0) {
-    boost::format m("call to HDF5 C-function H5Gopen2() returned error %d. HDF5 error statck follows:\n%s");
-    m % *retval % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  return retval;
-}
-
-bob::io::base::detail::hdf5::Group::Group(boost::shared_ptr<Group> parent, const std::string& name):
-  m_name(name),
-  m_id(create_new_group(parent->location(), name)),
-  m_parent(parent)
-{
-}
-
-/**
- * Simple wrapper to call internal bob::io::base::detail::hdf5::Group::iterate_callback, that can call
- * Group and Dataset constructors. Note that those are private or protected for
- * design reasons.
- */
-static herr_t group_iterate_callback(hid_t self, const char *name,
-    const H5L_info_t *info, void *object) {
-  return static_cast<bob::io::base::detail::hdf5::Group*>(object)->iterate_callback(self, name, info);
-}
-
-herr_t bob::io::base::detail::hdf5::Group::iterate_callback(hid_t self, const char *name,
-    const H5L_info_t *info) {
-
-  // If we are not looking at a hard link to the data, just ignore
-  if (info->type != H5L_TYPE_HARD) {
-    TDEBUG1("Ignoring soft-link `" << name << "' in HDF5 file");
-    return 0;
-  }
-
-  // Get information about the HDF5 object
-  H5O_info_t obj_info;
-  herr_t status = H5Oget_info_by_name(self, name, &obj_info, H5P_DEFAULT);
-  if (status < 0) {
-    boost::format m("call to HDF5 C-function H5Oget_info_by_name() returned error %d. HDF5 error statck follows:\n%s");
-    m % status % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-
-  switch(obj_info.type) {
-    case H5O_TYPE_GROUP:
-      //creates with recursion
-      m_groups[name] = boost::make_shared<bob::io::base::detail::hdf5::Group>(shared_from_this(),
-          name, true);
-      m_groups[name]->open_recursively();
-      break;
-    case H5O_TYPE_DATASET:
-      m_datasets[name] = boost::make_shared<bob::io::base::detail::hdf5::Dataset>(shared_from_this(),
-          std::string(name));
-      break;
-    default:
-      break;
-  }
-
-  return 0;
-}
-
-bob::io::base::detail::hdf5::Group::Group(boost::shared_ptr<Group> parent,
-    const std::string& name, bool):
-  m_name(name),
-  m_id(open_group(parent->location(), name.c_str())),
-  m_parent(parent)
-{
-  //checks name
-  if (!m_name.size() || m_name == "." || m_name == "..") {
-    boost::format m("Cannot create group with illegal name `%s' at `%s'");
-    m % name % url();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::detail::hdf5::Group::open_recursively() {
-  //iterates over this group only and instantiates what needs to be instantiated
-  herr_t status = H5Literate(*m_id, H5_INDEX_NAME,
-      H5_ITER_NATIVE, 0, group_iterate_callback, static_cast<void*>(this));
-  if (status < 0) {
-    boost::format m("Call to HDF5 C-function H5Literate() returned error %d. HDF5 error statck follows:\n%s");
-    m % status % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-}
-
-bob::io::base::detail::hdf5::Group::Group(boost::shared_ptr<File> parent):
-  m_name(""),
-  m_id(open_group(parent->location(), "/")),
-  m_parent()
-{
-}
-
-bob::io::base::detail::hdf5::Group::~Group() { }
-
-const boost::shared_ptr<bob::io::base::detail::hdf5::Group> bob::io::base::detail::hdf5::Group::parent() const {
-  return m_parent.lock();
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::Group> bob::io::base::detail::hdf5::Group::parent() {
-  return m_parent.lock();
-}
-
-const std::string& bob::io::base::detail::hdf5::Group::filename() const {
-  return parent()->filename();
-}
-
-std::string bob::io::base::detail::hdf5::Group::path() const {
-  return (m_name.size()?parent()->path():"") + "/" + m_name;
-}
-
-std::string bob::io::base::detail::hdf5::Group::url() const {
-  return filename() + ":" + path();
-}
-
-const boost::shared_ptr<bob::io::base::detail::hdf5::File> bob::io::base::detail::hdf5::Group::file() const {
-  return parent()->file();
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::File> bob::io::base::detail::hdf5::Group::file() {
-  return parent()->file();
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::Group> bob::io::base::detail::hdf5::Group::cd(const std::string& dir) {
-  //empty dir == void action, return self
-  if (!dir.size()) return shared_from_this();
-
-  if (dir[0] == '/') { //absolute path given, apply to root node
-    return file()->root()->cd(dir.substr(1));
-  }
-
-  //relative path given, start from self
-  std::string::size_type pos = dir.find_first_of('/');
-  if (pos == std::string::npos) { //it should be one of my children
-    if (dir == ".") return shared_from_this();
-    if (dir == "..") {
-      if (!m_name.size()) { //this is the root group already
-        boost::format m("Cannot go beyond root directory at file `%s'");
-        m % file()->filename();
-        throw std::runtime_error(m.str());
-      }
-      //else, just return its parent
-      return parent();
-    }
-    if (!has_group(dir)) {
-      boost::format m("Cannot find group `%s' at `%s'");
-      m % dir % url();
-      throw std::runtime_error(m.str());
-    }
-    //else, just return the named group
-    return m_groups[dir];
-  }
-
-  //if you get to this point, we are just traversing
-  std::string mydir = dir.substr(0, pos);
-  if (mydir == ".") return cd(dir.substr(pos+1));
-  if (mydir == "..") return parent()->cd(dir.substr(pos+1));
-  if (!has_group(mydir)) {
-    boost::format m("Cannot find group `%s' at `%s'");
-    m % dir % url();
-    throw std::runtime_error(m.str());
-  }
-
-  //else, just recurse to the next group
-  return m_groups[mydir]->cd(dir.substr(pos+1));
-}
-
-const boost::shared_ptr<bob::io::base::detail::hdf5::Group> bob::io::base::detail::hdf5::Group::cd(const std::string& dir) const {
-  return const_cast<bob::io::base::detail::hdf5::Group*>(this)->cd(dir);
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> bob::io::base::detail::hdf5::Group::operator[] (const std::string& dir) {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //search on the current group
-    if (!has_dataset(dir)) {
-      boost::format m("Cannot find dataset `%s' at `%s'");
-      m % dir % url();
-      throw std::runtime_error(m.str());
-    }
-    return m_datasets[dir];
-  }
-
-  //if you get to this point, the search routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or raise an exception.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->operator[](dir.substr(pos+1));
-}
-
-const boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> bob::io::base::detail::hdf5::Group::operator[] (const std::string& dir) const {
-  return const_cast<bob::io::base::detail::hdf5::Group*>(this)->operator[](dir);
-}
-
-void bob::io::base::detail::hdf5::Group::reset() {
-  typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Group> > group_map_type;
-  for (group_map_type::const_iterator it = m_groups.begin();
-      it != m_groups.end(); ++it) {
-    remove_group(it->first);
-  }
-
-  typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> >
-    dataset_map_type;
-  for (dataset_map_type::const_iterator it = m_datasets.begin();
-      it != m_datasets.end(); ++it) {
-    remove_dataset(it->first);
-  }
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::Group> bob::io::base::detail::hdf5::Group::create_group(const std::string& dir) {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //creates on the current group
-    boost::shared_ptr<bob::io::base::detail::hdf5::Group> g =
-      boost::make_shared<bob::io::base::detail::hdf5::Group>(shared_from_this(), dir);
-    m_groups[dir] = g;
-    return g;
-  }
-
-  //if you get to this point, the search routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or raise an exception.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->create_group(dir.substr(pos+1));
-}
-
-void bob::io::base::detail::hdf5::Group::remove_group(const std::string& dir) {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //copy on the current group
-    herr_t status = H5Ldelete(*m_id, dir.c_str(), H5P_DEFAULT);
-    if (status < 0) {
-      boost::format m("Call to HDF5 C-function H5Ldelete() returned error %d. HDF5 error statck follows:\n%s");
-      m % status % bob::io::base::format_hdf5_error();
-      throw std::runtime_error(m.str());
-    }
-    typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Group> > map_type;
-    map_type::iterator it = m_groups.find(dir);
-    m_groups.erase(it);
-    return;
-  }
-
-  //if you get to this point, the removal routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or raise an exception.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->remove_group(dir.substr(pos+1));
-}
-
-/**
- * Opens an "auto-destructible" HDF5 property list
- */
-static void delete_h5plist (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Pclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Pclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_plist(hid_t classid) {
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5plist));
-  *retval = H5Pcreate(classid);
-  if (*retval < 0) {
-    boost::format m("call to HDF5 C-function H5Pcreate() returned error %d. HDF5 error statck follows:\n%s");
-    m % *retval % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  return retval;
-}
-
-void bob::io::base::detail::hdf5::Group::rename_group(const std::string& from, const std::string& to) {
-  boost::shared_ptr<hid_t> create_props = open_plist(H5P_LINK_CREATE);
-  H5Pset_create_intermediate_group(*create_props, 1);
-  herr_t status = H5Lmove(*m_id, from.c_str(), H5L_SAME_LOC, to.c_str(),
-      *create_props, H5P_DEFAULT);
-  if (status < 0) {
-    boost::format m("Call to HDF5 C-function H5Lmove() returned error %d. HDF5 error statck follows:\n%s");
-    m % status % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::detail::hdf5::Group::copy_group(const boost::shared_ptr<Group> other,
-    const std::string& dir) {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //copy on the current group
-    const char* use_name = dir.size()?dir.c_str():other->name().c_str();
-    herr_t status = H5Ocopy(*other->parent()->location(),
-        other->name().c_str(), *m_id, use_name, H5P_DEFAULT, H5P_DEFAULT);
-    if (status < 0) {
-      boost::format m("call to HDF5 C-function H5Ocopy() returned error %d. HDF5 error statck follows:\n%s");
-      m % status % bob::io::base::format_hdf5_error();
-      throw std::runtime_error(m.str());
-    }
-
-    //read new group contents
-    boost::shared_ptr<bob::io::base::detail::hdf5::Group> copied =
-      boost::make_shared<bob::io::base::detail::hdf5::Group>(shared_from_this(), use_name);
-    copied->open_recursively();
-
-    //index it
-    m_groups[use_name] = copied;
-
-    return;
-  }
-
-  //if you get to this point, the copy routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or return false.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->copy_group(other, dir.substr(pos+1));
-}
-
-bool bob::io::base::detail::hdf5::Group::has_group(const std::string& dir) const {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //search on the current group
-    if (dir == "." || dir == "..") return true; //special case
-    typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Group> > map_type;
-    map_type::const_iterator it = m_groups.find(dir);
-    return (it != m_groups.end());
-  }
-
-  //if you get to this point, the search routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or return false.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->has_group(dir.substr(pos+1));
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> bob::io::base::detail::hdf5::Group::create_dataset
-(const std::string& dir, const bob::io::base::HDF5Type& type, bool list,
- size_t compression) {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //creates on the current group
-    boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> d =
-      boost::make_shared<bob::io::base::detail::hdf5::Dataset>(shared_from_this(), dir, type,
-          list, compression);
-    m_datasets[dir] = d;
-    return d;
-  }
-
-  //if you get to this point, the search routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or return false.
-  std::string dest = dir.substr(0, pos);
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g;
-  if (!dest.size()) g = cd("/");
-  else {
-    //let's make sure the directory exists, or let's create it recursively
-    if (!has_group(dest)) g = create_group(dest);
-    else g = cd(dest);
-  }
-  return g->create_dataset(dir.substr(pos+1), type, list, compression);
-}
-
-void bob::io::base::detail::hdf5::Group::remove_dataset(const std::string& dir) {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //removes on the current group
-    herr_t status = H5Ldelete(*m_id, dir.c_str(), H5P_DEFAULT);
-    if (status < 0) {
-      boost::format m("Call to HDF5 C-function H5Ldelete() returned error %d. HDF5 error statck follows:\n%s");
-      m % status % bob::io::base::format_hdf5_error();
-      throw std::runtime_error(m.str());
-    }
-    typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> > map_type;
-    map_type::iterator it = m_datasets.find(dir);
-    m_datasets.erase(it);
-    return;
-  }
-
-  //if you get to this point, the removal routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or raise an exception.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->remove_dataset(dir.substr(pos+1));
-}
-
-void bob::io::base::detail::hdf5::Group::rename_dataset(const std::string& from, const std::string& to) {
-  boost::shared_ptr<hid_t> create_props = open_plist(H5P_LINK_CREATE);
-  H5Pset_create_intermediate_group(*create_props, 1);
-  herr_t status = H5Lmove(*m_id, from.c_str(), H5L_SAME_LOC, to.c_str(),
-      *create_props, H5P_DEFAULT);
-  if (status < 0) {
-    boost::format m("Call to HDF5 C-function H5Ldelete() returned error %d. HDF5 error statck follows:\n%s");
-    m % status % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-}
-
-void bob::io::base::detail::hdf5::Group::copy_dataset(const boost::shared_ptr<Dataset> other,
-    const std::string& dir) {
-
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //search on the current group
-    const char* use_name = dir.size()?dir.c_str():other->name().c_str();
-    herr_t status = H5Ocopy(*other->parent()->location(),
-        other->name().c_str(), *m_id, use_name, H5P_DEFAULT, H5P_DEFAULT);
-    if (status < 0) {
-      boost::format m("Call to HDF5 C-function H5Ocopy() returned error %d. HDF5 error statck follows:\n%s");
-      m % status % bob::io::base::format_hdf5_error();
-      throw std::runtime_error(m.str());
-    }
-    //read new group contents
-    m_datasets[use_name] = boost::make_shared<bob::io::base::detail::hdf5::Dataset>(shared_from_this(), use_name);
-    return;
-  }
-
-  //if you get to this point, the copy routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->copy_dataset(other, dir.substr(pos+1));
-}
-
-bool bob::io::base::detail::hdf5::Group::has_dataset(const std::string& dir) const {
-  std::string::size_type pos = dir.find_last_of('/');
-  if (pos == std::string::npos) { //search on the current group
-    typedef std::map<std::string, boost::shared_ptr<bob::io::base::detail::hdf5::Dataset> > map_type;
-    map_type::const_iterator it = m_datasets.find(dir);
-    return (it != m_datasets.end());
-  }
-
-  //if you get to this point, the search routine needs to be performed on
-  //another group, indicated by the path. So, we first cd() there and then do
-  //the same as we do here. This will recurse through the directory structure
-  //until we find the place defined by the user or return false.
-  std::string dest = dir.substr(0, pos);
-  if (!dest.size()) dest = "/";
-  boost::shared_ptr<bob::io::base::detail::hdf5::Group> g = cd(dest);
-  return g->has_dataset(dir.substr(pos+1));
-}
-
-void bob::io::base::detail::hdf5::Group::gettype_attribute(const std::string& name,
-    bob::io::base::HDF5Type& type) const {
-  bob::io::base::detail::hdf5::gettype_attribute(m_id, name, type);
-}
-
-bool bob::io::base::detail::hdf5::Group::has_attribute(const std::string& name) const {
-  return bob::io::base::detail::hdf5::has_attribute(m_id, name);
-}
-
-void bob::io::base::detail::hdf5::Group::delete_attribute (const std::string& name) {
-  bob::io::base::detail::hdf5::delete_attribute(m_id, name);
-}
-
-void bob::io::base::detail::hdf5::Group::read_attribute (const std::string& name,
-    const bob::io::base::HDF5Type& dest_type, void* buffer) const {
-  bob::io::base::detail::hdf5::read_attribute(m_id, name, dest_type, buffer);
-}
-
-void bob::io::base::detail::hdf5::Group::write_attribute (const std::string& name,
-    const bob::io::base::HDF5Type& dest_type, const void* buffer) {
-  bob::io::base::detail::hdf5::write_attribute(m_id, name, dest_type, buffer);
-}
-
-void bob::io::base::detail::hdf5::Group::list_attributes(std::map<std::string, bob::io::base::HDF5Type>& attributes) const {
-  bob::io::base::detail::hdf5::list_attributes(m_id, attributes);
-}
-
-template <> void bob::io::base::detail::hdf5::Group::set_attribute<std::string>(const std::string& name, const std::string& v) {
-  bob::io::base::HDF5Type dest_type(v);
-  write_attribute(name, dest_type, reinterpret_cast<const void*>(v.c_str()));
-}
-
-template <> std::string bob::io::base::detail::hdf5::Group::get_attribute(const std::string& name) const {
-  HDF5Type type;
-  gettype_attribute(name, type);
-  boost::shared_array<char> v(new char[type.shape()[0]+1]);
-  v[type.shape()[0]] = 0; ///< null termination
-  read_attribute(name, type, reinterpret_cast<void*>(v.get()));
-  std::string retval(v.get());
-  return retval;
-}
-
-bob::io::base::detail::hdf5::RootGroup::RootGroup(boost::shared_ptr<File> parent):
-  bob::io::base::detail::hdf5::Group(parent),
-  m_parent(parent)
-{
-}
-
-bob::io::base::detail::hdf5::RootGroup::~RootGroup() {
-}
-
-const std::string& bob::io::base::detail::hdf5::RootGroup::filename() const {
-  return m_parent.lock()->filename();
-}
diff --git a/bob/io/base/cpp/HDF5Types.cpp b/bob/io/base/cpp/HDF5Types.cpp
deleted file mode 100644
index 0f38566..0000000
--- a/bob/io/base/cpp/HDF5Types.cpp
+++ /dev/null
@@ -1,866 +0,0 @@
-/**
- * @date Wed Jun 22 17:50:08 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief A few helpers to handle HDF5 datasets in a more abstract way.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/format.hpp>
-#include <sstream>
-#include <boost/make_shared.hpp>
-
-/**
- * MT "lock" support was only introduced in Boost 1.35. Before copying this
- * very ugly hack, make sure we are still using Boost 1.34. This will no longer
- * be the case starting January 2011.
- */
-#include <boost/version.hpp>
-#include <boost/thread/mutex.hpp>
-#if ((BOOST_VERSION / 100) % 1000) > 34
-#include <boost/thread/locks.hpp>
-#else
-#warning Disabling MT locks because Boost < 1.35!
-#endif
-
-#include <bob.core/logging.h>
-
-#include <bob.io.base/HDF5Types.h>
-
-const char* bob::io::base::stringize (hdf5type t) {
-  switch (t) {
-    case bob::io::base::s:
-      return "string";
-    case bob::io::base::b:
-      return "bool";
-    case bob::io::base::i8:
-      return "int8";
-    case bob::io::base::i16:
-      return "int16";
-    case bob::io::base::i32:
-      return "int32";
-    case bob::io::base::i64:
-      return "int64";
-    case bob::io::base::u8:
-      return "uint8";
-    case bob::io::base::u16:
-      return "uint16";
-    case bob::io::base::u32:
-      return "uint32";
-    case bob::io::base::u64:
-      return "uint64";
-    case bob::io::base::f32:
-      return "float32";
-    case bob::io::base::f64:
-      return "float64";
-    case bob::io::base::f128:
-      return "float128";
-    case bob::io::base::c64:
-      return "complex64";
-    case bob::io::base::c128:
-      return "complex128";
-    case bob::io::base::c256:
-      return "complex256";
-    case bob::io::base::unsupported:
-      return "unsupported";
-  }
-  return "unsupported"; ///< just to silence gcc
-}
-
-static herr_t walker(unsigned n, const H5E_error2_t *desc, void *cookie) {
-  bob::io::base::HDF5ErrorStack& stack = *(bob::io::base::HDF5ErrorStack*)cookie;
-  std::vector<std::string>& sv = stack.get();
-  boost::format fmt("%s() @ %s+%d: %s");
-  fmt % desc->func_name % desc->file_name % desc->line % desc->desc;
-  sv.push_back(fmt.str());
-  return 0;
-}
-
-static herr_t err_callback(hid_t stack, void* cookie) {
-  bob::io::base::HDF5ErrorStack& err_stack = *(bob::io::base::HDF5ErrorStack*)cookie;
-  if (!err_stack.muted()) H5Ewalk2(stack, H5E_WALK_DOWNWARD, walker, cookie);
-  H5Eclear2(stack);
-  return 0;
-}
-
-bob::io::base::HDF5ErrorStack::HDF5ErrorStack ():
-  m_stack(H5E_DEFAULT),
-  m_muted(false),
-  m_err(),
-  m_func(0),
-  m_client_data(0)
-{
-  H5Eget_auto2(m_stack, &m_func, &m_client_data);
-  H5Eset_auto2(m_stack, err_callback, this);
-}
-
-bob::io::base::HDF5ErrorStack::HDF5ErrorStack (hid_t stack):
-  m_stack(stack),
-  m_muted(false),
-  m_err(),
-  m_func(0),
-  m_client_data(0)
-{
-  H5Eget_auto2(m_stack, &m_func, &m_client_data);
-  H5Eset_auto2(m_stack, err_callback, this);
-}
-
-bob::io::base::HDF5ErrorStack::~HDF5ErrorStack () {
-  H5Eset_auto2(m_stack, m_func, m_client_data);
-}
-
-//creates a pointer to the default HDF5 error stack that is global to the
-//application level.
-const boost::shared_ptr<bob::io::base::HDF5ErrorStack>
-  bob::io::base::DefaultHDF5ErrorStack(new HDF5ErrorStack());
-
-bob::io::base::HDF5Shape::HDF5Shape (size_t n):
-  m_n(n),
-  m_shape()
-{
-  if (n > MAX_HDF5SHAPE_SIZE) {
-    boost::format m("cannot create shape with %u dimensions, exceeding the maximum number of dimensions supported by this API (%u)");
-    m % n % MAX_HDF5SHAPE_SIZE;
-    throw std::runtime_error(m.str());
-  }
-  for (size_t i=0; i<n; ++i) m_shape[i] = 0;
-}
-
-bob::io::base::HDF5Shape::HDF5Shape ():
-  m_n(0),
-  m_shape()
-{
-}
-
-bob::io::base::HDF5Shape::HDF5Shape (const bob::io::base::HDF5Shape& other):
-  m_n(other.m_n),
-  m_shape()
-{
-  for (size_t i=0; i<m_n; ++i) m_shape[i] = other.m_shape[i];
-}
-
-bob::io::base::HDF5Shape::~HDF5Shape() {
-}
-
-bob::io::base::HDF5Shape& bob::io::base::HDF5Shape::operator= (const bob::io::base::HDF5Shape& other) {
-  m_n = other.m_n;
-  for (size_t i=0; i<m_n; ++i) m_shape[i] = other.m_shape[i];
-  return *this;
-}
-
-void bob::io::base::HDF5Shape::copy(const bob::io::base::HDF5Shape& other) {
-  if (m_n <= other.m_n) { //I'm smaller or equal
-    for (size_t i=0; i<m_n; ++i) m_shape[i] = other.m_shape[i];
-  }
-  else { //The other is smaller
-    for (size_t i=0; i<other.m_n; ++i) m_shape[i] = other.m_shape[i];
-  }
-}
-
-void bob::io::base::HDF5Shape::reset() {
-  m_n = 0;
-}
-
-bob::io::base::HDF5Shape& bob::io::base::HDF5Shape::operator <<= (size_t pos) {
-  if (!m_n || !pos) return *this;
-  for (size_t i=0; i<(m_n-pos); ++i) m_shape[i] = m_shape[i+pos];
-  m_n -= pos;
-  return *this;
-}
-
-bob::io::base::HDF5Shape& bob::io::base::HDF5Shape::operator >>= (size_t pos) {
-  if (!pos) return *this;
-  if ( (m_n + pos) > MAX_HDF5SHAPE_SIZE) {
-    boost::format m("if you shift right this shape by %u positions, you will exceed the maximum number of dimensions supported by this API (%u)");
-    m % pos % MAX_HDF5SHAPE_SIZE;
-    throw std::runtime_error(m.str());
-  }
-  for (size_t i=(m_n+pos-1); i>(pos-1); --i) m_shape[i] = m_shape[i-1];
-  for (size_t i=0; i<pos; ++i) m_shape[i] = 1;
-  m_n += pos;
-  return *this;
-}
-
-hsize_t bob::io::base::HDF5Shape::product() const {
-  hsize_t retval = 1;
-  for (size_t i=0; i<m_n; ++i) retval *= m_shape[i];
-  return retval;
-}
-
-bool bob::io::base::HDF5Shape::operator== (const HDF5Shape& other) const {
-  if (m_n != other.m_n) return false;
-  for (size_t i=0; i<m_n; ++i) if (m_shape[i] != other[i]) return false;
-  return true;
-}
-
-bool bob::io::base::HDF5Shape::operator!= (const HDF5Shape& other) const {
-  return !(*this == other);
-}
-
-std::string bob::io::base::HDF5Shape::str () const {
-  if (m_n == 0) return "";
-  std::ostringstream retval("");
-  retval << m_shape[0];
-  for (size_t i=1; i<m_n; ++i) retval << ", " << m_shape[i];
-  return retval.str();
-}
-
-/**
- * Deleter method for auto-destroyable HDF5 datatypes.
- */
-static void delete_h5datatype (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Tclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Tclose() exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-/**
- * Given a datatype which is a compound type, returns the std::complex<T>
- * hdf5type equivalent or raises.
- */
-static bob::io::base::hdf5type equivctype(const boost::shared_ptr<hid_t>& dt) {
-  if (H5Tget_nmembers(*dt) != 2) throw std::runtime_error("the internal HDF5 type is not supported by our HDF5 interface");
-
-  //members have to:
-  // 1. have names "real" and "imag"
-  // 2. have class type H5T_FLOAT
-  // 3. have equal size
-  // 4. have a size of 4, 8 or 16 bytes
-
-  // 1.
-  int real = H5Tget_member_index(*dt, "real");
-  if (real < 0) {
-    throw std::runtime_error("the complex member index for `real' is not present on this HDF5 type");
-  }
-  int imag = H5Tget_member_index(*dt, "imag");
-  if (imag < 0) {
-    throw std::runtime_error("the complex member index for `imag' is not present on this HDF5 type");
-  }
-
-  // 2.
-  if (H5Tget_member_class(*dt, real) != H5T_FLOAT)
-    throw std::runtime_error("the raw type for member `real' on complex structure in HDF5 is not H5T_FLOAT as expected");
-  if (H5Tget_member_class(*dt, imag) != H5T_FLOAT)
-    throw std::runtime_error("the raw type for member `imag' on complex structure in HDF5 is not H5T_FLOAT as expected");
-
-  // 3.
-  boost::shared_ptr<hid_t> realid(new hid_t(-1), std::ptr_fun(delete_h5datatype));
-  *realid = H5Tget_member_type(*dt, real);
-  boost::shared_ptr<hid_t> imagid(new hid_t(-1), std::ptr_fun(delete_h5datatype));
-  *imagid = H5Tget_member_type(*dt, imag);
-  size_t realsize = H5Tget_size(*realid);
-  size_t imagsize = H5Tget_size(*imagid);
-  if (realsize != imagsize) {
-    throw std::runtime_error("the sizes of the real and imaginary parts on HDF5 complex struct are not the same");
-  }
-
-  // 4.
-  switch (realsize) {
-    case 4: //std::complex<float>
-      return bob::io::base::c64;
-    case 8: //std::complex<double>
-      return bob::io::base::c128;
-    case 16: //std::complex<double>
-      return bob::io::base::c256;
-    default:
-      break;
-  }
-
-  throw std::runtime_error("could not find the equivalent internal type for (supposedly) complex HDF5 structure");
-}
-
-/**
- * Checks if a given type can be read as boolean
- */
-static void checkbool(const boost::shared_ptr<hid_t>& dt) {
-
-  if (H5Tget_nmembers(*dt) != 2) {
-    throw std::runtime_error("the number of enumeration members for the locally installed boolean type is not 2");
-  }
-
-  int8_t value;
-  herr_t status = H5Tget_member_value(*dt, 0, &value);
-  if (status < 0) {
-    boost::format m("call to HDF5 C-function H5Tget_member_value() returned error %d. HDF5 error statck follows:\n%s");
-    m % status % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  bool next_is_false = false;
-  if (value != 0) next_is_false = true;
-  status = H5Tget_member_value(*dt, 1, &value);
-  if (status < 0) {
-    boost::format m("call to HDF5 C-function H5Tget_member_value() returned error %d. HDF5 error statck follows:\n%s");
-    m % status % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  if (next_is_false) {
-    if (value != 0) {
-      throw std::runtime_error("the attribution of false(0) or true(1) is messed up on the current data type, which is supposed to be a boolean");
-    }
-  }
-  else {
-    if (value == 0) {
-      throw std::runtime_error("the attribution of false(0) or true(1) is messed up on the current data type, which is supposed to be a boolean");
-    }
-  }
-}
-
-/**
- * Given a datatype, returns the supported type equivalent or raises
- */
-static bob::io::base::hdf5type get_datatype
-(const boost::shared_ptr<hid_t>& dt) {
-  H5T_class_t classtype = H5Tget_class(*dt);
-
-  if (classtype == H5T_STRING) return bob::io::base::s; //no need to check further
-
-  size_t typesize = H5Tget_size(*dt); ///< element size
-  H5T_sign_t signtype = H5Tget_sign(*dt);
-
-  //we only support little-endian byte-ordering
-  H5T_order_t ordertype = H5Tget_order(*dt);
-
-  //please note that checking compound types for hdf5 < 1.8.6 does not work.
-# if H5_VERSION_GE(1,8,6)
-  if (ordertype < 0) {
-    boost::format m("call to HDF5 C-function H5Tget_order returned error %d. HDF5 error statck follows:\n%s");
-    m % ordertype % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-
-  if (ordertype != H5T_ORDER_LE) {
-    throw std::runtime_error("The endianness of datatype is not little-endian");
-  }
-# else
-  if ((ordertype >= 0) && (ordertype != H5T_ORDER_LE)) {
-    throw std::runtime_error("The endianness of datatype is not little-endian");
-  }
-# endif
-
-  switch (classtype) {
-    case H5T_ENUM:
-      checkbool(dt);
-      return bob::io::base::b;
-    case H5T_INTEGER:
-      switch (typesize) {
-        case 1: //int8 or uint8
-          switch (signtype) {
-            case H5T_SGN_NONE:
-              return bob::io::base::u8;
-            case H5T_SGN_2: //two's complement == "is signed" ;-)
-              return bob::io::base::i8;
-            default:
-              throw std::runtime_error("HDF5 1-byte integer datatype (read from file) cannot be mapped into a C++ type supported by this API");
-          }
-          break;
-        case 2: //int16 or uint16
-          switch (signtype) {
-            case H5T_SGN_NONE:
-              return bob::io::base::u16;
-            case H5T_SGN_2: //two's complement == "is signed" ;-)
-              return bob::io::base::i16;
-            default:
-              throw std::runtime_error("HDF5 2-byte integer datatype (read from file) cannot be mapped into a C++ type supported by this API");
-          }
-          break;
-        case 4: //int32 or uint32
-          switch (signtype) {
-            case H5T_SGN_NONE:
-              return bob::io::base::u32;
-            case H5T_SGN_2: //two's complement == "is signed" ;-)
-              return bob::io::base::i32;
-            default:
-              throw std::runtime_error("HDF5 4-byte integer datatype (read from file) cannot be mapped into a C++ type supported by this API");
-          }
-          break;
-        case 8: //int64 or uint64
-          switch (signtype) {
-            case H5T_SGN_NONE:
-              return bob::io::base::u64;
-            case H5T_SGN_2: //two's complement == "is signed" ;-)
-              return bob::io::base::i64;
-            default:
-              throw std::runtime_error("HDF5 8-byte integer datatype (read from file) cannot be mapped into a C++ type supported by this API");
-          }
-          break;
-        default:
-          break;
-      }
-      break;
-    case H5T_FLOAT:
-      switch (typesize) {
-        case 4: //float
-          return bob::io::base::f32;
-        case 8: //double
-          return bob::io::base::f64;
-        case 16: //long double
-          return bob::io::base::f128;
-        default:
-          break;
-      }
-      break;
-    case H5T_COMPOUND: //complex
-      return equivctype(dt);
-    default:
-      break;
-  }
-
-  throw std::runtime_error("cannot handle HDF5 datatype on file using one of the native types supported by this API");
-}
-
-bool bob::io::base::HDF5Type::compatible (const bob::io::base::array::typeinfo& value) const
-{
-  return *this == HDF5Type(value);
-}
-
-/**
- * Given a datatype, returns the supported HDF5 datatype equivalent or -1
- */
-boost::shared_ptr<hid_t> bob::io::base::HDF5Type::htype() const {
-  switch (m_type) {
-    case bob::io::base::s:
-      {
-        boost::shared_ptr<hid_t> retval(new hid_t(-1),
-            std::ptr_fun(delete_h5datatype));
-        *retval = H5Tcopy(H5T_C_S1);
-        if (*retval < 0) {
-          boost::format m("call to HDF5 C-function H5Tcopy() returned error %d. HDF5 error statck follows:\n%s");
-          m % *retval % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-
-        //set string size
-        herr_t status = H5Tset_size(*retval, m_shape[0]);
-        if (status < 0) {
-          boost::format m("Call to HDF5 C-function H5Tset_size() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-
-        return retval;
-      }
-    case bob::io::base::b:
-      {
-        //why? HDF5 is a C library and in C there is no boolean type
-        //bottom-line => we have to define our own...
-
-        boost::shared_ptr<hid_t> retval(new hid_t(-1),
-            std::ptr_fun(delete_h5datatype));
-        *retval = H5Tenum_create(H5T_NATIVE_INT8);
-        if (*retval < 0) {
-          boost::format m("call to HDF5 C-function H5Tenum_create() returned error %d. HDF5 error statck follows:\n%s");
-          m % *retval % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        int8_t val;
-        herr_t status;
-
-        //defines false
-        val = 0;
-        status = H5Tenum_insert(*retval, "false", &val);
-        if (status < 0) {
-          boost::format m("call to HDF5 C-function H5Tenum_insert() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-
-        //defines true
-        val = 1;
-        status = H5Tenum_insert(*retval, "true",  &val);
-        if (*retval < 0) {
-          boost::format m("call to HDF5 C-function H5Tenum_insert() returned error %d. HDF5 error statck follows:\n%s");
-          m % *retval % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-
-        return retval;
-      }
-    case bob::io::base::i8:
-      return boost::make_shared<hid_t>(H5T_NATIVE_INT8);
-    case bob::io::base::i16:
-      return boost::make_shared<hid_t>(H5T_NATIVE_INT16);
-    case bob::io::base::i32:
-      return boost::make_shared<hid_t>(H5T_NATIVE_INT32);
-    case bob::io::base::i64:
-      return boost::make_shared<hid_t>(H5T_NATIVE_INT64);
-    case bob::io::base::u8:
-      return boost::make_shared<hid_t>(H5T_NATIVE_UINT8);
-    case bob::io::base::u16:
-      return boost::make_shared<hid_t>(H5T_NATIVE_UINT16);
-    case bob::io::base::u32:
-      return boost::make_shared<hid_t>(H5T_NATIVE_UINT32);
-    case bob::io::base::u64:
-      return boost::make_shared<hid_t>(H5T_NATIVE_UINT64);
-    case bob::io::base::f32:
-      return boost::make_shared<hid_t>(H5T_NATIVE_FLOAT);
-    case bob::io::base::f64:
-      return boost::make_shared<hid_t>(H5T_NATIVE_DOUBLE);
-    case bob::io::base::f128:
-      return boost::make_shared<hid_t>(H5T_NATIVE_LDOUBLE);
-    case bob::io::base::c64:
-      {
-        boost::shared_ptr<hid_t> retval(new hid_t(-1),
-            std::ptr_fun(delete_h5datatype));
-        *retval = H5Tcreate(H5T_COMPOUND, 2*sizeof(float));
-        if (*retval < 0) {
-          boost::format m("call to HDF5 C-function H5Tcreate() returned error %d. HDF5 error statck follows:\n%s");
-          m % *retval % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        herr_t status = H5Tinsert(*retval, "real", 0, H5T_NATIVE_FLOAT);
-        if (status < 0) {
-          boost::format m("call to HDF5 C-function H5Tinsert() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        status = H5Tinsert(*retval, "imag", sizeof(float), H5T_NATIVE_FLOAT);
-        if (status < 0) {
-          boost::format m("call to HDF5 C-function H5Tinsert() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        return retval;
-      }
-    case bob::io::base::c128:
-      {
-        boost::shared_ptr<hid_t> retval(new hid_t(-1),
-            std::ptr_fun(delete_h5datatype));
-        *retval = H5Tcreate(H5T_COMPOUND, 2*sizeof(double));
-        if (*retval < 0) {
-          boost::format m("call to HDF5 C-function H5Tcreate() returned error %d. HDF5 error statck follows:\n%s");
-          m % *retval % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        herr_t status = H5Tinsert(*retval, "real", 0, H5T_NATIVE_DOUBLE);
-        if (status < 0) {
-          boost::format m("call to HDF5 C-function H5Tinsert() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        status = H5Tinsert(*retval, "imag", sizeof(double), H5T_NATIVE_DOUBLE);
-        if (status < 0) {
-          boost::format m("call to HDF5 C-function H5Tinsert() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        return retval;
-      }
-    case bob::io::base::c256:
-      {
-        boost::shared_ptr<hid_t> retval(new hid_t(-1),
-            std::ptr_fun(delete_h5datatype));
-        *retval = H5Tcreate(H5T_COMPOUND, 2*sizeof(long double));
-        if (*retval < 0) {
-          boost::format m("call to HDF5 C-function H5Tcreate() returned error %d. HDF5 error statck follows:\n%s");
-          m % *retval % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        herr_t status = H5Tinsert(*retval, "real", 0, H5T_NATIVE_LDOUBLE);
-        if (status < 0) {
-          boost::format m("call to HDF5 C-function H5Tinsert() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        status = H5Tinsert(*retval, "imag", sizeof(long double), H5T_NATIVE_LDOUBLE);
-        if (status < 0) {
-          boost::format m("call to HDF5 C-function H5Tinsert() returned error %d. HDF5 error statck follows:\n%s");
-          m % status % bob::io::base::format_hdf5_error();
-          throw std::runtime_error(m.str());
-        }
-        return retval;
-      }
-    default:
-      break;
-  }
-  throw std::runtime_error("the C++ type you are trying to convert into a native HDF5 type is not supported by this API");
-}
-
-#define DEFINE_SUPPORT(T,E) bob::io::base::HDF5Type::HDF5Type(const T& value): \
-    m_type(E), m_shape(1) { m_shape[0] = 1; }
-DEFINE_SUPPORT(bool,bob::io::base::b)
-DEFINE_SUPPORT(int8_t,bob::io::base::i8)
-DEFINE_SUPPORT(int16_t,bob::io::base::i16)
-DEFINE_SUPPORT(int32_t,bob::io::base::i32)
-DEFINE_SUPPORT(int64_t,bob::io::base::i64)
-DEFINE_SUPPORT(uint8_t,bob::io::base::u8)
-DEFINE_SUPPORT(uint16_t,bob::io::base::u16)
-DEFINE_SUPPORT(uint32_t,bob::io::base::u32)
-DEFINE_SUPPORT(uint64_t,bob::io::base::u64)
-DEFINE_SUPPORT(float,bob::io::base::f32)
-DEFINE_SUPPORT(double,bob::io::base::f64)
-DEFINE_SUPPORT(long double,bob::io::base::f128)
-DEFINE_SUPPORT(std::complex<float>,bob::io::base::c64)
-DEFINE_SUPPORT(std::complex<double>,bob::io::base::c128)
-DEFINE_SUPPORT(std::complex<long double>,bob::io::base::c256)
-#undef DEFINE_SUPPORT
-
-bob::io::base::HDF5Type::HDF5Type(const char* value):
-  m_type(bob::io::base::s),
-  m_shape(1)
-{
-  m_shape[0] = std::strlen(value);
-}
-
-bob::io::base::HDF5Type::HDF5Type(const std::string& value):
-  m_type(bob::io::base::s),
-  m_shape(1)
-{
-  m_shape[0] = value.size();
-}
-
-#define DEFINE_SUPPORT(T,E,N) bob::io::base::HDF5Type::HDF5Type \
-    (const blitz::Array<T,N>& value): \
-      m_type(E), \
-      m_shape(value.shape()) { \
-        if (N > bob::io::base::array::N_MAX_DIMENSIONS_ARRAY) {\
-          boost::format m("you passed an array with %d dimensions, but this HDF5 API only supports arrays with up to %d dimensions"); \
-          m % N % bob::io::base::array::N_MAX_DIMENSIONS_ARRAY; \
-          throw std::runtime_error(m.str()); \
-        } \
-      }
-
-#define DEFINE_BZ_SUPPORT(T,E) \
-  DEFINE_SUPPORT(T,E,1) \
-  DEFINE_SUPPORT(T,E,2) \
-  DEFINE_SUPPORT(T,E,3) \
-  DEFINE_SUPPORT(T,E,4)
-
-DEFINE_BZ_SUPPORT(bool,bob::io::base::b)
-DEFINE_BZ_SUPPORT(int8_t,bob::io::base::i8)
-DEFINE_BZ_SUPPORT(int16_t,bob::io::base::i16)
-DEFINE_BZ_SUPPORT(int32_t,bob::io::base::i32)
-DEFINE_BZ_SUPPORT(int64_t,bob::io::base::i64)
-DEFINE_BZ_SUPPORT(uint8_t,bob::io::base::u8)
-DEFINE_BZ_SUPPORT(uint16_t,bob::io::base::u16)
-DEFINE_BZ_SUPPORT(uint32_t,bob::io::base::u32)
-DEFINE_BZ_SUPPORT(uint64_t,bob::io::base::u64)
-DEFINE_BZ_SUPPORT(float,bob::io::base::f32)
-DEFINE_BZ_SUPPORT(double,bob::io::base::f64)
-DEFINE_BZ_SUPPORT(long double,bob::io::base::f128)
-DEFINE_BZ_SUPPORT(std::complex<float>,bob::io::base::c64)
-DEFINE_BZ_SUPPORT(std::complex<double>,bob::io::base::c128)
-DEFINE_BZ_SUPPORT(std::complex<long double>,bob::io::base::c256)
-#undef DEFINE_BZ_SUPPORT
-#undef DEFINE_SUPPORT
-
-bob::io::base::HDF5Type::HDF5Type():
-  m_type(bob::io::base::unsupported),
-  m_shape()
-{
-}
-
-bob::io::base::HDF5Type::HDF5Type(bob::io::base::hdf5type type):
-  m_type(type),
-  m_shape(1)
-{
-  m_shape[0] = 1;
-}
-
-bob::io::base::HDF5Type::HDF5Type(bob::io::base::hdf5type type, const bob::io::base::HDF5Shape& extents):
-  m_type(type),
-  m_shape(extents)
-{
-}
-
-static bob::io::base::hdf5type array_to_hdf5 (bob::io::base::array::ElementType eltype) {
-  switch(eltype) {
-    case bob::io::base::array::t_unknown:
-      return bob::io::base::unsupported;
-    case bob::io::base::array::t_bool:
-      return bob::io::base::b;
-    case bob::io::base::array::t_int8:
-      return bob::io::base::i8;
-    case bob::io::base::array::t_int16:
-      return bob::io::base::i16;
-    case bob::io::base::array::t_int32:
-      return bob::io::base::i32;
-    case bob::io::base::array::t_int64:
-      return bob::io::base::i64;
-    case bob::io::base::array::t_uint8:
-      return bob::io::base::u8;
-    case bob::io::base::array::t_uint16:
-      return bob::io::base::u16;
-    case bob::io::base::array::t_uint32:
-      return bob::io::base::u32;
-    case bob::io::base::array::t_uint64:
-      return bob::io::base::u64;
-    case bob::io::base::array::t_float32:
-      return bob::io::base::f32;
-    case bob::io::base::array::t_float64:
-      return bob::io::base::f64;
-    case bob::io::base::array::t_float128:
-      return bob::io::base::f128;
-    case bob::io::base::array::t_complex64:
-      return bob::io::base::c64;
-    case bob::io::base::array::t_complex128:
-      return bob::io::base::c128;
-    case bob::io::base::array::t_complex256:
-      return bob::io::base::c256;
-  }
-  throw std::runtime_error("unsupported dtype <=> hdf5 type conversion -- FIXME");
-}
-
-bob::io::base::HDF5Type::HDF5Type(const bob::io::base::array::typeinfo& ti):
-  m_type(array_to_hdf5(ti.dtype)),
-  m_shape(ti.nd, ti.shape)
-{
-}
-
-bob::io::base::HDF5Type::HDF5Type(bob::io::base::array::ElementType eltype,
-    const HDF5Shape& extents):
-  m_type(array_to_hdf5(eltype)),
-  m_shape(extents)
-{
-}
-
-bob::io::base::HDF5Type::HDF5Type(const boost::shared_ptr<hid_t>& type,
-    const bob::io::base::HDF5Shape& extents):
-  m_type(get_datatype(type)),
-  m_shape(extents)
-{
-}
-
-bob::io::base::HDF5Type::HDF5Type(const boost::shared_ptr<hid_t>& type):
-  m_type(get_datatype(type)),
-  m_shape(1)
-{
-  //strings have to be treated slightly differently
-  if (H5Tget_class(*type) == H5T_STRING) m_shape[0] = H5Tget_size(*type);
-  else m_shape[0] = 1;
-}
-
-bob::io::base::HDF5Type::HDF5Type(const HDF5Type& other):
-  m_type(other.m_type),
-  m_shape(other.m_shape)
-{
-}
-
-bob::io::base::HDF5Type::~HDF5Type() { }
-
-bob::io::base::HDF5Type& bob::io::base::HDF5Type::operator= (const bob::io::base::HDF5Type& other)
-{
-  m_type = other.m_type;
-  m_shape = other.m_shape;
-  return *this;
-}
-
-bool bob::io::base::HDF5Type::operator== (const bob::io::base::HDF5Type& other) const {
-  return (m_type == other.m_type) && (m_shape == other.m_shape);
-}
-
-bool bob::io::base::HDF5Type::operator!= (const bob::io::base::HDF5Type& other) const {
-  return !(*this == other);
-}
-
-std::string bob::io::base::HDF5Type::str() const {
-  boost::format retval("%s (%s)");
-  retval % bob::io::base::stringize(m_type) % m_shape.str();
-  return retval.str();
-}
-
-bob::io::base::array::ElementType bob::io::base::HDF5Type::element_type() const {
-  switch (m_type) {
-    case b:
-      return bob::io::base::array::t_bool;
-    case i8:
-      return bob::io::base::array::t_int8;
-    case i16:
-      return bob::io::base::array::t_int16;
-    case i32:
-      return bob::io::base::array::t_int32;
-    case i64:
-      return bob::io::base::array::t_int64;
-    case u8:
-      return bob::io::base::array::t_uint8;
-    case u16:
-      return bob::io::base::array::t_uint16;
-    case u32:
-      return bob::io::base::array::t_uint32;
-    case u64:
-      return bob::io::base::array::t_uint64;
-    case f32:
-      return bob::io::base::array::t_float32;
-    case f64:
-      return bob::io::base::array::t_float64;
-    case f128:
-      return bob::io::base::array::t_float128;
-    case c64:
-      return bob::io::base::array::t_complex64;
-    case c128:
-      return bob::io::base::array::t_complex128;
-    case c256:
-      return bob::io::base::array::t_complex256;
-    case s:
-      throw std::runtime_error("Cannot convert HDF5 string type to an element type to be used in blitz::Array's - FIXME: something is wrong in the logic");
-    default:
-      break;
-  }
-  return bob::io::base::array::t_unknown;
-}
-
-void bob::io::base::HDF5Type::copy_to (bob::io::base::array::typeinfo& ti) const {
-  ti.dtype = element_type();
-  ti.nd = shape().n();
-  if (ti.nd > (BOB_MAX_DIM+1)) {
-    boost::format f("HDF5 type has more (%d) than the allowed maximum number of dimensions (%d)");
-    f % ti.nd % (BOB_MAX_DIM+1);
-    throw std::runtime_error(f.str());
-  }
-  for (size_t i=0; i<ti.nd; ++i) ti.shape[i] = shape()[i];
-  ti.update_strides();
-}
-
-bob::io::base::HDF5Descriptor::HDF5Descriptor(const HDF5Type& type, size_t size,
-          bool expand):
-  type(type),
-  size(size),
-  expandable(expand),
-  hyperslab_start(type.shape().n()),
-  hyperslab_count(type.shape())
-{
-}
-
-bob::io::base::HDF5Descriptor::HDF5Descriptor(const HDF5Descriptor& other):
-  type(other.type),
-  size(other.size),
-  expandable(other.expandable),
-  hyperslab_start(other.hyperslab_start),
-  hyperslab_count(other.hyperslab_count)
-{
-}
-
-bob::io::base::HDF5Descriptor::~HDF5Descriptor() { }
-
-bob::io::base::HDF5Descriptor& bob::io::base::HDF5Descriptor::operator=
-(const bob::io::base::HDF5Descriptor& other) {
-  type = other.type;
-  size = other.size;
-  expandable = other.expandable;
-  hyperslab_start = other.hyperslab_start;
-  hyperslab_count = other.hyperslab_count;
-  return *this;
-}
-
-bob::io::base::HDF5Descriptor& bob::io::base::HDF5Descriptor::subselect() {
-  hyperslab_start >>= 1;
-  hyperslab_count >>= 1;
-  hyperslab_count[0] = 1;
-  return *this;
-}
-
-std::string bob::io::base::format_hdf5_error() {
-  const std::vector<std::string>& stack = bob::io::base::DefaultHDF5ErrorStack->get();
-  std::ostringstream retval;
-  std::string prefix(" ");
-  if (stack.size()) retval << prefix << stack[0];
-  for (size_t i=1; i<stack.size(); ++i)
-    retval << std::endl << prefix << stack[i];
-  bob::io::base::DefaultHDF5ErrorStack->clear();
-  return retval.str();
-}
diff --git a/bob/io/base/cpp/HDF5Utils.cpp b/bob/io/base/cpp/HDF5Utils.cpp
deleted file mode 100644
index 12c13ea..0000000
--- a/bob/io/base/cpp/HDF5Utils.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * @date Wed Jun 22 17:50:08 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Implements a set of utilities to read HDF5 files.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/format.hpp>
-#include <boost/make_shared.hpp>
-
-#include <bob.core/logging.h>
-
-#include <bob.io.base/HDF5Utils.h>
-
-/**
- * Opens/Creates an "auto-destructible" HDF5 file
- */
-static void delete_h5file (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Fclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Fclose(hid=" << *p << ") exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-    }
-  }
-  delete p;
-}
-
-/**
- * Opens/Creates and "auto-destructible" HDF5 file creation property list
- */
-static void delete_h5p (hid_t* p) {
-  if (*p >= 0) {
-    herr_t err = H5Pclose(*p);
-    if (err < 0) {
-      bob::core::error << "H5Pclose(hid=" << *p << ") exited with an error (" << err << "). The stack trace follows:" << std::endl;
-      bob::core::error << bob::io::base::format_hdf5_error() << std::endl;
-      return;
-    }
-  }
-  delete p;
-}
-
-static boost::shared_ptr<hid_t> open_file(const boost::filesystem::path& path,
-    unsigned int flags, boost::shared_ptr<hid_t>& fcpl) {
-
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5file));
-
-  if (!boost::filesystem::exists(path) && flags == H5F_ACC_RDONLY) {
-    //file was opened for reading, but does not exist... Raise
-    boost::format m("cannot open file `%s'");
-    m % path.string();
-    throw std::runtime_error(m.str());
-  }
-
-  if (boost::filesystem::exists(path) && flags != H5F_ACC_TRUNC) { //open
-    *retval = H5Fopen(path.string().c_str(), flags, H5P_DEFAULT);
-    if (*retval < 0) {
-      boost::format m("call to HDF5 C-function H5Fopen() returned error %d on file '%s'. HDF5 error statck follows:\n%s");
-      m % *retval % path.string().c_str() % bob::io::base::format_hdf5_error();
-      throw std::runtime_error(m.str());
-    }
-    //replaces the file create list properties with the one from the file
-    fcpl = boost::shared_ptr<hid_t>(new hid_t(-1), std::ptr_fun(delete_h5p));
-    *fcpl = H5Fget_create_plist(*retval);
-    if (*fcpl < 0) {
-      boost::format m("call to HDF5 C-function H5Fget_create_list() returned error %d on file '%s'. HDF5 error statck follows:\n%s");
-      m % *fcpl % path.string().c_str() % bob::io::base::format_hdf5_error();
-      throw std::runtime_error(m.str());
-    }
-  }
-  else { //file needs to be created or truncated (can set user block)
-    *retval = H5Fcreate(path.string().c_str(), H5F_ACC_TRUNC,
-        *fcpl, H5P_DEFAULT);
-    if (*retval < 0) {
-      boost::format m("call to HDF5 C-function H5Fcreate() returned error %d on file '%s'. HDF5 error statck follows:\n%s");
-      m % *retval % path.string().c_str() % bob::io::base::format_hdf5_error();
-      throw std::runtime_error(m.str());
-    }
-  }
-  return retval;
-}
-
-static boost::shared_ptr<hid_t> create_fcpl(hsize_t userblock_size) {
-  if (!userblock_size) return boost::make_shared<hid_t>(H5P_DEFAULT);
-  //otherwise we have to go through the settings
-  boost::shared_ptr<hid_t> retval(new hid_t(-1), std::ptr_fun(delete_h5p));
-  *retval = H5Pcreate(H5P_FILE_CREATE);
-  if (*retval < 0) {
-    boost::format m("call to HDF5 C-function H5Pcreate() returned error %d. HDF5 error statck follows:\n%s");
-    m % *retval % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  herr_t err = H5Pset_userblock(*retval, userblock_size);
-  if (err < 0) {
-    boost::format m("call to HDF5 C-function H5Pset_userblock() returned error %d. HDF5 error statck follows:\n%s");
-    m % err % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  return retval;
-}
-
-bob::io::base::detail::hdf5::File::File(const boost::filesystem::path& path, unsigned int flags,
-    size_t userblock_size):
-  m_path(path),
-  m_flags(flags),
-  m_fcpl(create_fcpl(userblock_size)),
-  m_id(open_file(m_path, m_flags, m_fcpl))
-{
-}
-
-bob::io::base::detail::hdf5::File::~File() {
-}
-
-boost::shared_ptr<bob::io::base::detail::hdf5::RootGroup> bob::io::base::detail::hdf5::File::root() {
-  if (!m_root) {
-    m_root = boost::make_shared<bob::io::base::detail::hdf5::RootGroup>(shared_from_this());
-    m_root->open_recursively();
-  }
-  return m_root;
-}
-
-void bob::io::base::detail::hdf5::File::reset() {
-  m_root.reset();
-}
-
-void bob::io::base::detail::hdf5::File::flush() {
-  herr_t err = H5Fflush(*m_id, H5F_SCOPE_GLOBAL);
-  if (err < 0){
-    std::runtime_error("H5Fflush returned with an error code.");
-  }
-}
-
-bool bob::io::base::detail::hdf5::File::writable() const {
-  return (m_flags != H5F_ACC_RDONLY);
-}
-
-size_t bob::io::base::detail::hdf5::File::userblock_size() const {
-  hsize_t retval;
-  herr_t err = H5Pget_userblock(*m_fcpl, &retval);
-  if (err < 0) {
-    boost::format m("Call to HDF5 C-function H5Pget_create_plist() returned error %d. HDF5 error statck follows:\n%s");
-    m % err % bob::io::base::format_hdf5_error();
-    throw std::runtime_error(m.str());
-  }
-  return retval;
-}
-
-void bob::io::base::detail::hdf5::File::get_userblock(std::string& data) const {
-  //TODO
-}
-
-void bob::io::base::detail::hdf5::File::set_userblock(const std::string& data) {
-  //TODO
-}
diff --git a/bob/io/base/cpp/array.cpp b/bob/io/base/cpp/array.cpp
deleted file mode 100644
index 2ffc94d..0000000
--- a/bob/io/base/cpp/array.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * @date Tue Nov 8 15:34:31 2011 +0100
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Some buffer stuff
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/format.hpp>
-#include <bob.io.base/array.h>
-
-bob::io::base::array::typeinfo::typeinfo():
-  dtype(bob::io::base::array::t_unknown),
-  nd(0)
-{
-}
-
-bob::io::base::array::typeinfo::typeinfo(const bob::io::base::array::typeinfo& other):
-  dtype(other.dtype)
-{
-  set_shape(other.nd, other.shape);
-}
-
-bob::io::base::array::typeinfo& bob::io::base::array::typeinfo::operator= (const bob::io::base::array::typeinfo& other) {
-  dtype = other.dtype;
-  set_shape(other.nd, other.shape);
-  return *this;
-}
-
-void bob::io::base::array::typeinfo::reset() {
-  dtype = bob::io::base::array::t_unknown;
-  nd = 0;
-}
-
-bool bob::io::base::array::typeinfo::is_valid() const {
-  return (dtype != bob::io::base::array::t_unknown) && (nd > 0) && (nd <= (BOB_MAX_DIM+1)) && has_valid_shape();
-}
-
-void bob::io::base::array::typeinfo::update_strides() {
-  switch (nd) {
-    case 0:
-      return;
-    case 1:
-      stride[0] = 1;
-      return;
-    case 2:
-      stride[1] = 1;
-      stride[0] = shape[1];
-      return;
-    case 3:
-      stride[2] = 1;
-      stride[1] = shape[2];
-      stride[0] = shape[1]*shape[2];
-      return;
-    case 4:
-      stride[3] = 1;
-      stride[2] = shape[3];
-      stride[1] = shape[2]*shape[3];
-      stride[0] = shape[1]*shape[2]*shape[3];
-      return;
-    case 5:
-      stride[4] = 1;
-      stride[3] = shape[4];
-      stride[2] = shape[3]*shape[4];
-      stride[1] = shape[2]*shape[3]*shape[4];
-      stride[0] = shape[1]*shape[2]*shape[3]*shape[4];
-      return;
-    default:
-      break;
-  }
-  throw std::runtime_error("unsupported number of dimensions");
-}
-
-size_t bob::io::base::array::typeinfo::size() const {
-  size_t retval = 1;
-  for (size_t k=0; k<nd; ++k) retval *= shape[k];
-  return retval;
-}
-
-size_t bob::io::base::array::typeinfo::buffer_size() const {
-  return size()*bob::io::base::array::getElementSize(dtype);
-}
-
-static bool same_shape(size_t nd, const size_t* s1, const size_t* s2) {
-  for (size_t k=0; k<nd; ++k) if (s1[k] != s2[k]) return false;
-  return true;
-}
-
-bool bob::io::base::array::typeinfo::is_compatible(const bob::io::base::array::typeinfo& other) const {
-  return (dtype == other.dtype) && (nd == other.nd) && same_shape(nd, shape, other.shape);
-}
-
-std::string bob::io::base::array::typeinfo::str() const {
-  boost::format s("dtype: %s (%d); shape: [%s]; size: %d bytes");
-  size_t sz = 0;
-  size_t buf_sz = 0;
-  if (dtype != bob::io::base::array::t_unknown) {
-    //otherwise it throws
-    sz = item_size();
-    buf_sz = buffer_size();
-  }
-  s % item_str() % sz;
-  switch (nd) {
-    case 0:
-      s % "";
-      break;
-    case 1:
-      s % (boost::format("%d") % shape[0]).str();
-      break;
-    case 2:
-      s % (boost::format("%d,%d") % shape[0] % shape[1]).str();
-      break;
-    case 3:
-      s % (boost::format("%d,%d,%d") % shape[0] % shape[1] % shape[2]).str();
-      break;
-    case 4:
-      s % (boost::format("%d,%d,%d,%d") % shape[0] % shape[1] % shape[2] % shape[3]).str();
-      break;
-    default:
-      s % ">4 dimensions?";
-      break;
-  }
-  s % buf_sz;
-  return s.str();
-}
-
-void bob::io::base::array::typeinfo::reset_shape() {
-  shape[0] = 0;
-}
-
-bool bob::io::base::array::typeinfo::has_valid_shape() const {
-  return shape[0] != 0;
-}
diff --git a/bob/io/base/cpp/array_type.cpp b/bob/io/base/cpp/array_type.cpp
deleted file mode 100644
index d42368e..0000000
--- a/bob/io/base/cpp/array_type.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- * @date Sat Apr 9 18:10:10 2011 +0200
- * @author Laurent El Shafey <Laurent.El-Shafey@idiap.ch>
- *
- * @brief Some type-related array utilities
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <bob.io.base/array_type.h>
-#include <boost/format.hpp>
-
-static const char* t_bool_string = "bool";
-static const char* t_int8_string = "int8";
-static const char* t_int16_string = "int16";
-static const char* t_int32_string = "int32";
-static const char* t_int64_string = "int64";
-static const char* t_uint8_string = "uint8";
-static const char* t_uint16_string = "uint16";
-static const char* t_uint32_string = "uint32";
-static const char* t_uint64_string = "uint64";
-static const char* t_float32_string = "float32";
-static const char* t_float64_string = "float64";
-static const char* t_float128_string = "float128";
-static const char* t_complex64_string = "complex64";
-static const char* t_complex128_string = "complex128";
-static const char* t_complex256_string = "complex256";
-static const char* t_unknown_string = "unknown";
-
-size_t bob::io::base::array::getElementSize(ElementType t) {
-  switch(t) {
-    case bob::io::base::array::t_bool:
-      return sizeof(bool);
-    case bob::io::base::array::t_int8:
-      return sizeof(int8_t);
-    case bob::io::base::array::t_int16:
-      return sizeof(int16_t);
-    case bob::io::base::array::t_int32:
-      return sizeof(int32_t);
-    case bob::io::base::array::t_int64:
-      return sizeof(int64_t);
-    case bob::io::base::array::t_uint8:
-      return sizeof(uint8_t);
-    case bob::io::base::array::t_uint16:
-      return sizeof(uint16_t);
-    case bob::io::base::array::t_uint32:
-      return sizeof(uint32_t);
-    case bob::io::base::array::t_uint64:
-      return sizeof(uint64_t);
-    case bob::io::base::array::t_float32:
-      return sizeof(float);
-    case bob::io::base::array::t_float64:
-      return sizeof(double);
-    case bob::io::base::array::t_float128:
-      return sizeof(long double);
-    case bob::io::base::array::t_complex64:
-      return sizeof(std::complex<float>);
-    case bob::io::base::array::t_complex128:
-      return sizeof(std::complex<double>);
-    case bob::io::base::array::t_complex256:
-      return sizeof(std::complex<long double>);
-    default:
-      {
-        boost::format m("unsupported element type (%d)");
-        m % (int)t;
-        throw std::runtime_error(m.str());
-      }
-  }
-}
-
-const char* bob::io::base::array::stringize(ElementType t) {
-  switch(t) {
-    case bob::io::base::array::t_bool:
-      return t_bool_string;
-    case bob::io::base::array::t_int8:
-      return t_int8_string;
-    case bob::io::base::array::t_int16:
-      return t_int16_string;
-    case bob::io::base::array::t_int32:
-      return t_int32_string;
-    case bob::io::base::array::t_int64:
-      return t_int64_string;
-    case bob::io::base::array::t_uint8:
-      return t_uint8_string;
-    case bob::io::base::array::t_uint16:
-      return t_uint16_string;
-    case bob::io::base::array::t_uint32:
-      return t_uint32_string;
-    case bob::io::base::array::t_uint64:
-      return t_uint64_string;
-    case bob::io::base::array::t_float32:
-      return t_float32_string;
-    case bob::io::base::array::t_float64:
-      return t_float64_string;
-    case bob::io::base::array::t_float128:
-      return t_float128_string;
-    case bob::io::base::array::t_complex64:
-      return t_complex64_string;
-    case bob::io::base::array::t_complex128:
-      return t_complex128_string;
-    case bob::io::base::array::t_complex256:
-      return t_complex256_string;
-    default:
-      return t_unknown_string;
-  }
-}
-
-bob::io::base::array::ElementType bob::io::base::array::unstringize(const char* s) {
-  std::string sc(s);
-  if (sc == t_bool_string) return bob::io::base::array::t_bool;
-  if (sc == t_int8_string) return bob::io::base::array::t_int8;
-  if (sc == t_int16_string) return bob::io::base::array::t_int16;
-  if (sc == t_int32_string) return bob::io::base::array::t_int32;
-  if (sc == t_int64_string) return bob::io::base::array::t_int64;
-  if (sc == t_uint8_string) return bob::io::base::array::t_uint8;
-  if (sc == t_uint16_string) return bob::io::base::array::t_uint16;
-  if (sc == t_uint32_string) return bob::io::base::array::t_uint32;
-  if (sc == t_uint64_string) return bob::io::base::array::t_uint64;
-  if (sc == t_float32_string) return bob::io::base::array::t_float32;
-  if (sc == t_float64_string) return bob::io::base::array::t_float64;
-  if (sc == t_float128_string) return bob::io::base::array::t_float128;
-  if (sc == t_complex64_string) return bob::io::base::array::t_complex64;
-  if (sc == t_complex128_string) return bob::io::base::array::t_complex128;
-  if (sc == t_complex256_string) return bob::io::base::array::t_complex256;
-  return bob::io::base::array::t_unknown;
-}
diff --git a/bob/io/base/cpp/blitz_array.cpp b/bob/io/base/cpp/blitz_array.cpp
deleted file mode 100644
index 2bc723a..0000000
--- a/bob/io/base/cpp/blitz_array.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/**
- * @date Tue Nov 8 15:34:31 2011 +0100
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Implementation of non-templated methods of the blitz
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <stdexcept>
-
-#include <bob.io.base/blitz_array.h>
-
-bob::io::base::array::blitz_array::blitz_array(boost::shared_ptr<blitz_array> other) {
-  set(other);
-}
-
-bob::io::base::array::blitz_array::blitz_array(const blitz_array& other) {
-  set(other);
-}
-
-bob::io::base::array::blitz_array::blitz_array(boost::shared_ptr<interface> other) {
-  set(other);
-}
-
-bob::io::base::array::blitz_array::blitz_array(const interface& other) {
-  set(other);
-}
-
-bob::io::base::array::blitz_array::blitz_array(const typeinfo& info) {
-  set(info);
-}
-
-bob::io::base::array::blitz_array::blitz_array(void* data, const typeinfo& info):
-  m_type(info),
-  m_ptr(data),
-  m_is_blitz(false) {
-}
-
-bob::io::base::array::blitz_array::~blitz_array() {
-}
-
-void bob::io::base::array::blitz_array::set(boost::shared_ptr<blitz_array> other) {
-  m_type = other->m_type;
-  m_ptr = other->m_ptr;
-  m_is_blitz = other->m_is_blitz;
-  m_data = other->m_data;
-}
-
-void bob::io::base::array::blitz_array::set(const interface& other) {
-  set(other.type());
-  memcpy(m_ptr, other.ptr(), m_type.buffer_size());
-}
-
-void bob::io::base::array::blitz_array::set(boost::shared_ptr<interface> other) {
-  m_type = other->type();
-  m_ptr = other->ptr();
-  m_is_blitz = false;
-  m_data = other;
-}
-
-template <typename T>
-static boost::shared_ptr<void> make_array(size_t nd, const size_t* shape,
-    void*& ptr) {
-  switch(nd) {
-    case 1:
-      {
-        blitz::TinyVector<int,1> tv_shape;
-        for (size_t k=0; k<nd; ++k) tv_shape[k] = shape[k];
-        boost::shared_ptr<void> retval =
-          boost::make_shared<blitz::Array<T,1> >(tv_shape);
-        ptr = reinterpret_cast<void*>(boost::static_pointer_cast<blitz::Array<T,1> >(retval)->data());
-        return retval;
-      }
-    case 2:
-      {
-        blitz::TinyVector<int,2> tv_shape;
-        for (size_t k=0; k<nd; ++k) tv_shape[k] = shape[k];
-        boost::shared_ptr<void> retval =
-          boost::make_shared<blitz::Array<T,2> >(tv_shape);
-        ptr = reinterpret_cast<void*>(boost::static_pointer_cast<blitz::Array<T,2> >(retval)->data());
-        return retval;
-      }
-    case 3:
-      {
-        blitz::TinyVector<int,3> tv_shape;
-        for (size_t k=0; k<nd; ++k) tv_shape[k] = shape[k];
-        boost::shared_ptr<void> retval =
-          boost::make_shared<blitz::Array<T,3> >(tv_shape);
-        ptr = reinterpret_cast<void*>(boost::static_pointer_cast<blitz::Array<T,3> >(retval)->data());
-        return retval;
-      }
-    case 4:
-      {
-        blitz::TinyVector<int,4> tv_shape;
-        for (size_t k=0; k<nd; ++k) tv_shape[k] = shape[k];
-        boost::shared_ptr<void> retval =
-          boost::make_shared<blitz::Array<T,4> >(tv_shape);
-        ptr = reinterpret_cast<void*>(boost::static_pointer_cast<blitz::Array<T,4> >(retval)->data());
-        return retval;
-      }
-    default:
-      break;
-  }
-  throw std::runtime_error("unsupported number of dimensions -- debug me");
-}
-
-void bob::io::base::array::blitz_array::set (const bob::io::base::array::typeinfo& req) {
-  if (m_type.is_compatible(req)) return; ///< double-check requirement first!
-
-  //ok, have to go through reallocation
-  m_type = req;
-  m_is_blitz = true;
-  switch (m_type.dtype) {
-    case bob::io::base::array::t_bool:
-      m_data = make_array<bool>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_int8:
-      m_data = make_array<int8_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_int16:
-      m_data = make_array<int16_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_int32:
-      m_data = make_array<int32_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_int64:
-      m_data = make_array<int64_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_uint8:
-      m_data = make_array<uint8_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_uint16:
-      m_data = make_array<uint16_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_uint32:
-      m_data = make_array<uint32_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_uint64:
-      m_data = make_array<uint64_t>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_float32:
-      m_data = make_array<float>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_float64:
-      m_data = make_array<double>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_float128:
-      m_data = make_array<long double>(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_complex64:
-      m_data = make_array<std::complex<float> >(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_complex128:
-      m_data = make_array<std::complex<double> >(req.nd, req.shape, m_ptr);
-      return;
-    case bob::io::base::array::t_complex256:
-      m_data = make_array<std::complex<long double> >(req.nd, req.shape, m_ptr);
-      return;
-    default:
-      break;
-  }
-
-  //if we get to this point, there is nothing much we can do...
-  throw std::runtime_error("invalid data type on blitz array reset -- debug me");
-}
diff --git a/bob/io/base/cpp/reorder.cpp b/bob/io/base/cpp/reorder.cpp
deleted file mode 100644
index cda5ab3..0000000
--- a/bob/io/base/cpp/reorder.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/**
- * @date Tue Nov 22 11:24:44 2011 +0100
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Implementation of row-major/column-major reordering
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <boost/format.hpp>
-#include <cstring> //for memcpy
-
-#include <bob.io.base/reorder.h>
-
-void bob::io::base::rc2d(size_t& row, size_t& col, const size_t i, const size_t j,
-    const size_t* shape) {
-  row = (i * shape[1]) + j;
-  col = (j * shape[0]) + i;
-}
-
-void bob::io::base::rc3d(size_t& row, size_t& col, const size_t i, const size_t j,
-    const size_t k, const size_t* shape) {
-  row = ( (i * shape[1]) + j ) * shape[2] + k;
-  col = ( (k * shape[1]) + j ) * shape[0] + i;
-}
-
-void bob::io::base::rc4d(size_t& row, size_t& col, const size_t i, const size_t j,
-    const size_t k, const size_t l, const size_t* shape) {
-  row = ( ( i * shape[1] + j ) * shape[2] + k ) * shape[3] + l;
-  col = ( ( l * shape[2] + k ) * shape[1] + j ) * shape[0] + i;
-}
-
-void bob::io::base::row_to_col_order(const void* src_, void* dst_,
-    const bob::io::base::array::typeinfo& info) {
-
-  size_t dsize = info.item_size();
-
-  //cast to byte type so we can manipulate the pointers...
-  const uint8_t* src = static_cast<const uint8_t*>(src_);
-  uint8_t* dst = static_cast<uint8_t*>(dst_);
-
-  switch(info.nd) {
-
-    case 1:
-      std::memcpy(dst, src, info.buffer_size());
-      break;
-
-    case 2:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j) {
-          size_t row_major, col_major;
-          bob::io::base::rc2d(row_major, col_major, i, j, info.shape);
-          row_major *= dsize;
-          col_major *= dsize;
-          std::memcpy(&dst[col_major], &src[row_major], dsize);
-        }
-      break;
-
-    case 3:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k) {
-            size_t row_major, col_major;
-            bob::io::base::rc3d(row_major, col_major, i, j, k, info.shape);
-            row_major *= dsize;
-            col_major *= dsize;
-            std::memcpy(&dst[col_major], &src[row_major], dsize);
-          }
-      break;
-
-    case 4:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k)
-            for (size_t l=0; l<info.shape[3]; ++l) {
-              size_t row_major, col_major;
-              bob::io::base::rc4d(row_major, col_major, i, j, k, l, info.shape);
-              row_major *= dsize;
-              col_major *= dsize;
-              std::memcpy(&dst[col_major], &src[row_major], dsize);
-            }
-      break;
-
-    default:
-      {
-        boost::format m("row_to_col_order() can only flip arrays with up to %u dimensions - you passed one with %u dimensions");
-        m % BOB_MAX_DIM % info.nd;
-        throw std::runtime_error(m.str());
-      }
-  }
-}
-
-void bob::io::base::col_to_row_order(const void* src_, void* dst_,
-    const bob::io::base::array::typeinfo& info) {
-
-  size_t dsize = info.item_size();
-
-  //cast to byte type so we can manipulate the pointers...
-  const uint8_t* src = static_cast<const uint8_t*>(src_);
-  uint8_t* dst = static_cast<uint8_t*>(dst_);
-
-  switch(info.nd) {
-
-    case 1:
-      std::memcpy(dst, src, info.buffer_size());
-      break;
-
-    case 2:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j) {
-          size_t row_major, col_major;
-          bob::io::base::rc2d(row_major, col_major, i, j, info.shape);
-          row_major *= dsize;
-          col_major *= dsize;
-          std::memcpy(&dst[row_major], &src[col_major], dsize);
-        }
-      break;
-
-    case 3:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k) {
-            size_t row_major, col_major;
-            bob::io::base::rc3d(row_major, col_major, i, j, k, info.shape);
-            row_major *= dsize;
-            col_major *= dsize;
-            std::memcpy(&dst[row_major], &src[col_major], dsize);
-          }
-      break;
-
-    case 4:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k)
-            for (size_t l=0; l<info.shape[3]; ++l) {
-              size_t row_major, col_major;
-              bob::io::base::rc4d(row_major, col_major, i, j, k, l, info.shape);
-              row_major *= dsize;
-              col_major *= dsize;
-              std::memcpy(&dst[row_major], &src[col_major], dsize);
-            }
-      break;
-
-    default:
-      {
-        boost::format m("col_to_row_order() can only flip arrays with up to %u dimensions - you passed one with %u dimensions");
-        m % BOB_MAX_DIM % info.nd;
-        throw std::runtime_error(m.str());
-      }
-  }
-}
-
-void bob::io::base::row_to_col_order_complex(const void* src_, void* dst_re_,
-    void* dst_im_, const bob::io::base::array::typeinfo& info) {
-
-  size_t dsize = info.item_size();
-  size_t dsize2 = dsize/2; ///< size of each complex component (real, imaginary)
-
-  //cast to byte type so we can manipulate the pointers...
-  const uint8_t* src = static_cast<const uint8_t*>(src_);
-  uint8_t* dst_re = static_cast<uint8_t*>(dst_re_);
-  uint8_t* dst_im = static_cast<uint8_t*>(dst_im_);
-
-  switch(info.nd) {
-
-    case 1:
-      for (size_t i=0; i<info.shape[0]; ++i) {
-        std::memcpy(&dst_re[dsize2*i], &src[dsize*i]       , dsize2);
-        std::memcpy(&dst_im[dsize2*i], &src[dsize*i]+dsize2, dsize2);
-      }
-      break;
-
-    case 2:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j) {
-          size_t row_major, col_major;
-          bob::io::base::rc2d(row_major, col_major, i, j, info.shape);
-          row_major *= dsize;
-          col_major *= dsize2;
-          std::memcpy(&dst_re[col_major], &src[row_major]       , dsize2);
-          std::memcpy(&dst_im[col_major], &src[row_major]+dsize2, dsize2);
-        }
-      break;
-
-    case 3:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k) {
-            size_t row_major, col_major;
-            bob::io::base::rc3d(row_major, col_major, i, j, k, info.shape);
-            row_major *= dsize;
-            col_major *= dsize2;
-            std::memcpy(&dst_re[col_major], &src[row_major]       , dsize2);
-            std::memcpy(&dst_im[col_major], &src[row_major]+dsize2, dsize2);
-          }
-      break;
-
-    case 4:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k)
-            for (size_t l=0; l<info.shape[3]; ++l) {
-              size_t row_major, col_major;
-              bob::io::base::rc4d(row_major, col_major, i, j, k, l, info.shape);
-              row_major *= dsize;
-              col_major *= dsize2;
-              std::memcpy(&dst_re[col_major], &src[row_major]       , dsize2);
-              std::memcpy(&dst_im[col_major], &src[row_major]+dsize2, dsize2);
-            }
-      break;
-
-    default:
-      {
-        boost::format m("row_to_col_order_complex() can only flip arrays with up to %u dimensions - you passed one with %u dimensions");
-        m % BOB_MAX_DIM % info.nd;
-        throw std::runtime_error(m.str());
-      }
-  }
-}
-
-void bob::io::base::col_to_row_order_complex(const void* src_re_, const void* src_im_,
-    void* dst_, const bob::io::base::array::typeinfo& info) {
-
-  size_t dsize = info.item_size();
-  size_t dsize2 = dsize/2; ///< size of each complex component (real, imaginary)
-
-  //cast to byte type so we can manipulate the pointers...
-  const uint8_t* src_re = static_cast<const uint8_t*>(src_re_);
-  const uint8_t* src_im = static_cast<const uint8_t*>(src_im_);
-  uint8_t* dst = static_cast<uint8_t*>(dst_);
-
-  switch(info.nd) {
-
-    case 1:
-      for (size_t i=0; i<info.shape[0]; ++i) {
-        std::memcpy(&dst[dsize*i]       , &src_re[dsize2*i], dsize2);
-        std::memcpy(&dst[dsize*i]+dsize2, &src_im[dsize2*i], dsize2);
-      }
-      break;
-
-    case 2:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j) {
-          size_t row_major, col_major;
-          bob::io::base::rc2d(row_major, col_major, i, j, info.shape);
-          row_major *= dsize;
-          col_major *= dsize2;
-          std::memcpy(&dst[row_major],        &src_re[col_major], dsize2);
-          std::memcpy(&dst[row_major]+dsize2, &src_im[col_major], dsize2);
-        }
-      break;
-
-    case 3:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k) {
-            size_t row_major, col_major;
-            bob::io::base::rc3d(row_major, col_major, i, j, k, info.shape);
-            row_major *= dsize;
-            col_major *= dsize2;
-            std::memcpy(&dst[row_major]       , &src_re[col_major], dsize2);
-            std::memcpy(&dst[row_major]+dsize2, &src_im[col_major], dsize2);
-          }
-      break;
-
-    case 4:
-      for (size_t i=0; i<info.shape[0]; ++i)
-        for (size_t j=0; j<info.shape[1]; ++j)
-          for (size_t k=0; k<info.shape[2]; ++k)
-            for (size_t l=0; l<info.shape[3]; ++l) {
-              size_t row_major, col_major;
-              bob::io::base::rc4d(row_major, col_major, i, j, k, l, info.shape);
-              row_major *= dsize;
-              col_major *= dsize2;
-              std::memcpy(&dst[row_major]       , &src_re[col_major], dsize2);
-              std::memcpy(&dst[row_major]+dsize2, &src_im[col_major], dsize2);
-            }
-      break;
-
-    default:
-      {
-        boost::format m("col_to_row_order_complex() can only flip arrays with up to %u dimensions - you passed one with %u dimensions");
-        m % BOB_MAX_DIM % info.nd;
-        throw std::runtime_error(m.str());
-      }
-  }
-}
-
diff --git a/bob/io/base/cpp/utils.cpp b/bob/io/base/cpp/utils.cpp
deleted file mode 100644
index 3467b99..0000000
--- a/bob/io/base/cpp/utils.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed  3 Oct 08:36:48 2012
- *
- * @brief Implementation of some compile-time I/O utitlites
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#include <bob.io.base/CodecRegistry.h>
-#include <bob.io.base/utils.h>
-
-boost::shared_ptr<bob::io::base::File> bob::io::base::open (const char* filename,
-    char mode, const char* pretend_extension) {
-  boost::shared_ptr<bob::io::base::CodecRegistry> instance = bob::io::base::CodecRegistry::instance();
-  return instance->findByExtension(pretend_extension)(filename, mode);
-}
-
-boost::shared_ptr<bob::io::base::File> bob::io::base::open (const char* filename, char mode) {
-  boost::shared_ptr<bob::io::base::CodecRegistry> instance = bob::io::base::CodecRegistry::instance();
-  return instance->findByFilenameExtension(filename)(filename, mode);
-}
-
-bob::io::base::array::typeinfo bob::io::base::peek (const char* filename) {
-  return open(filename, 'r')->type();
-}
-
-bob::io::base::array::typeinfo bob::io::base::peek_all (const char* filename) {
-  return open(filename, 'r')->type_all();
-}
diff --git a/bob/io/base/file.cpp b/bob/io/base/file.cpp
deleted file mode 100644
index fc2622a..0000000
--- a/bob/io/base/file.cpp
+++ /dev/null
@@ -1,603 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Tue  5 Nov 11:16:09 2013
- *
- * @brief Bindings to bob::io::base::File
- */
-
-#define BOB_IO_BASE_MODULE
-#include "bobskin.h"
-#include <bob.io.base/api.h>
-#include <numpy/arrayobject.h>
-#include <bob.blitz/capi.h>
-#include <bob.blitz/cleanup.h>
-#include <bob.extension/documentation.h>
-#include <stdexcept>
-
-#include <bob.io.base/CodecRegistry.h>
-#include <bob.io.base/utils.h>
-
-/* Creates an exception message including the name of the given file, if possible */
-inline const std::string exception_message(PyBobIoFileObject* self, const std::string& name){
-  std::ostringstream str;
-  str << name << " (";
-  try{
-    str << "'" << self->f->filename() << "'";
-  } catch (...){
-    str << "<unkown>";
-  }
-  str << ")";
-  return  str.str();
-}
-
-static auto s_file = bob::extension::ClassDoc(
-  "File",
-  "Use this object to read and write data into files"
-)
-.add_constructor(
-  bob::extension::FunctionDoc(
-    "File",
-    "Opens a file for reading or writing",
-    "Normally, we read the file matching the extension to one of the available codecs installed with the present release of Bob. "
-    "If you set the ``pretend_extension`` parameter though, we will read the file as it had a given extension. "
-    "The value should start with a ``'.'``. "
-    "For example ``'.hdf5'``, to make the file be treated like an HDF5 file.",
-    true
-  )
-  .add_prototype("filename, [mode], [pretend_extension]", "")
-  .add_parameter("filename", "str", "The file path to the file you want to open")
-  .add_parameter("mode", "one of ('r', 'w', 'a')", "[Default: ``'r'``] A single character indicating if you'd like to ``'r'``\\ ead, ``'w'``\\ rite or ``'a'``\\ ppend into the file; if you choose ``'w'`` and the file already exists, it will be truncated")
-  .add_parameter("pretend_extension", "str", "[optional] An extension to use; see :py:func:`bob.io.base.extensions` for a list of (currently) supported extensions")
-);
-/* How to create a new PyBobIoFileObject */
-static PyObject* PyBobIoFile_New(PyTypeObject* type, PyObject*, PyObject*) {
-
-  /* Allocates the python object itself */
-  PyBobIoFileObject* self = (PyBobIoFileObject*)type->tp_alloc(type, 0);
-
-  self->f.reset();
-
-  return reinterpret_cast<PyObject*>(self);
-}
-
-static void PyBobIoFile_Delete (PyBobIoFileObject* o) {
-
-  o->f.reset();
-  Py_TYPE(o)->tp_free((PyObject*)o);
-
-}
-
-int PyBobIo_FilenameConverter (PyObject* o, const char** b) {
-#if PY_VERSION_HEX >= 0x03000000
-  if (PyUnicode_Check(o)) {
-    *b = PyUnicode_AsUTF8(o);
-  } else {
-    PyObject* temp = PyObject_Bytes(o);
-    if (!temp) return 0;
-    auto temp_ = make_safe(temp);
-    *b = PyBytes_AsString(temp);
-  }
-#else
-  if (PyUnicode_Check(o)) {
-    PyObject* temp = PyUnicode_AsEncodedString(o, Py_FileSystemDefaultEncoding, "strict");
-    if (!temp) return 0;
-    auto temp_ = make_safe(temp);
-    *b = PyString_AsString(temp);
-  } else {
-    *b = PyString_AsString(o);
-  }
-#endif
-  return b != 0;
-}
-
-/* The __init__(self) method */
-static int PyBobIoFile_init(PyBobIoFileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_file.kwlist();
-
-  const char* filename;
-  const char* pretend_extension = 0;
-
-#if PY_VERSION_HEX >= 0x03000000
-#  define MODE_CHAR "C"
-  int mode = 'r';
-#else
-#  define MODE_CHAR "c"
-  char mode = 'r';
-#endif
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&|" MODE_CHAR "s", kwlist,
-        &PyBobIo_FilenameConverter, &filename, &mode, &pretend_extension)) return -1;
-
-#undef MODE_CHAR
-
-  if (mode != 'r' && mode != 'w' && mode != 'a') {
-    PyErr_Format(PyExc_ValueError, "file open mode string should have 1 element and be either 'r' (read), 'w' (write) or 'a' (append)");
-    return -1;
-  }
-
-  if (pretend_extension) {
-    self->f = bob::io::base::open(filename, mode, pretend_extension);
-  }
-  else {
-    self->f = bob::io::base::open(filename, mode);
-  }
-
-  return 0; ///< SUCCESS
-BOB_CATCH_MEMBER("constructor", -1);
-}
-
-static PyObject* PyBobIoFile_repr(PyBobIoFileObject* self) {
-  return PyString_FromFormat("%s(filename='%s', codec='%s')", Py_TYPE(self)->tp_name, self->f->filename(), self->f->name());
-}
-
-static auto s_filename = bob::extension::VariableDoc(
-  "filename",
-  "str",
-  "The path to the file being read/written"
-);
-static PyObject* PyBobIoFile_Filename(PyBobIoFileObject* self) {
-  return Py_BuildValue("s", self->f->filename());
-}
-
-static auto s_codec_name = bob::extension::VariableDoc(
-  "codec_name",
-  "str",
-  "Name of the File class implementation",
-  "This variable is available for compatibility reasons with the previous versions of this library."
-);
-static PyObject* PyBobIoFile_CodecName(PyBobIoFileObject* self) {
-  return Py_BuildValue("s", self->f->name());
-}
-
-
-static PyGetSetDef PyBobIoFile_getseters[] = {
-    {
-      s_filename.name(),
-      (getter)PyBobIoFile_Filename,
-      0,
-      s_filename.doc(),
-      0,
-    },
-    {
-      s_codec_name.name(),
-      (getter)PyBobIoFile_CodecName,
-      0,
-      s_codec_name.doc(),
-      0,
-    },
-    {0}  /* Sentinel */
-};
-
-static Py_ssize_t PyBobIoFile_len (PyBobIoFileObject* self) {
-  Py_ssize_t retval = self->f->size();
-  return retval;
-}
-
-int PyBobIo_AsTypenum (bob::io::base::array::ElementType type) {
-
-  switch(type) {
-    case bob::io::base::array::t_bool:
-      return NPY_BOOL;
-    case bob::io::base::array::t_int8:
-      return NPY_INT8;
-    case bob::io::base::array::t_int16:
-      return NPY_INT16;
-    case bob::io::base::array::t_int32:
-      return NPY_INT32;
-    case bob::io::base::array::t_int64:
-      return NPY_INT64;
-    case bob::io::base::array::t_uint8:
-      return NPY_UINT8;
-    case bob::io::base::array::t_uint16:
-      return NPY_UINT16;
-    case bob::io::base::array::t_uint32:
-      return NPY_UINT32;
-    case bob::io::base::array::t_uint64:
-      return NPY_UINT64;
-    case bob::io::base::array::t_float32:
-      return NPY_FLOAT32;
-    case bob::io::base::array::t_float64:
-      return NPY_FLOAT64;
-#ifdef NPY_FLOAT128
-    case bob::io::base::array::t_float128:
-      return NPY_FLOAT128;
-#endif
-    case bob::io::base::array::t_complex64:
-      return NPY_COMPLEX64;
-    case bob::io::base::array::t_complex128:
-      return NPY_COMPLEX128;
-#ifdef NPY_COMPLEX256
-    case bob::io::base::array::t_complex256:
-      return NPY_COMPLEX256;
-#endif
-    default:
-      PyErr_Format(PyExc_TypeError, "unsupported Bob/C++ element type (%s)", bob::io::base::array::stringize(type));
-  }
-
-  return NPY_NOTYPE;
-
-}
-
-static PyObject* PyBobIoFile_getIndex (PyBobIoFileObject* self, Py_ssize_t i) {
-  if (i < 0) i += self->f->size(); ///< adjust for negative indexing
-
-  if (i < 0 || (size_t)i >= self->f->size()) {
-    PyErr_Format(PyExc_IndexError, "file index out of range - `%s' only contains %" PY_FORMAT_SIZE_T "d object(s)", self->f->filename(), self->f->size());
-    return 0;
-  }
-
-  const bob::io::base::array::typeinfo& info = self->f->type();
-
-  npy_intp shape[NPY_MAXDIMS];
-  for (size_t k=0; k<info.nd; ++k) shape[k] = info.shape[k];
-
-  int type_num = PyBobIo_AsTypenum(info.dtype);
-  if (type_num == NPY_NOTYPE) return 0; ///< failure
-
-  PyObject* retval = PyArray_SimpleNew(info.nd, shape, type_num);
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  bobskin skin((PyArrayObject*)retval, info.dtype);
-  self->f->read(skin, i);
-  return Py_BuildValue("O", retval);
-}
-
-static PyObject* PyBobIoFile_getSlice (PyBobIoFileObject* self, PySliceObject* slice) {
-
-  Py_ssize_t start, stop, step, slicelength;
-#if PY_VERSION_HEX < 0x03000000
-  if (PySlice_GetIndicesEx(slice,
-#else
-  if (PySlice_GetIndicesEx(reinterpret_cast<PyObject*>(slice),
-#endif
-        self->f->size(), &start, &stop, &step, &slicelength) < 0) return 0;
-
-  //creates the return array
-  const bob::io::base::array::typeinfo& info = self->f->type();
-
-  int type_num = PyBobIo_AsTypenum(info.dtype);
-  if (type_num == NPY_NOTYPE) return 0; ///< failure
-
-  if (slicelength <= 0) return PyArray_SimpleNew(0, 0, type_num);
-
-  npy_intp shape[NPY_MAXDIMS];
-  shape[0] = slicelength;
-  for (size_t k=0; k<info.nd; ++k) shape[k+1] = info.shape[k];
-
-  PyObject* retval = PyArray_SimpleNew(info.nd+1, shape, type_num);
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  Py_ssize_t counter = 0;
-  for (auto i = start; (start<=stop)?i<stop:i>stop; i+=step) {
-
-    //get slice to fill
-    PyObject* islice = Py_BuildValue("n", counter++);
-    if (!islice) return 0;
-    auto islice_ = make_safe(islice);
-
-    PyObject* item = PyObject_GetItem(retval, islice);
-    if (!item) return 0;
-    auto item_ = make_safe(item);
-
-    bobskin skin((PyArrayObject*)item, info.dtype);
-    self->f->read(skin, i);
-  }
-
-  return Py_BuildValue("O", retval);
-}
-
-static PyObject* PyBobIoFile_getItem (PyBobIoFileObject* self, PyObject* item) {
-  if (PyIndex_Check(item)) {
-   Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-   if (i == -1 && PyErr_Occurred()) return 0;
-   return PyBobIoFile_getIndex(self, i);
-  }
-  if (PySlice_Check(item)) {
-   return PyBobIoFile_getSlice(self, (PySliceObject*)item);
-  }
-  else {
-   PyErr_Format(PyExc_TypeError, "File indices must be integers, not %s", Py_TYPE(item)->tp_name);
-   return 0;
-  }
-}
-
-static PyMappingMethods PyBobIoFile_Mapping = {
-    (lenfunc)PyBobIoFile_len, //mp_length
-    (binaryfunc)PyBobIoFile_getItem, //mp_subscript
-    0 /* (objobjargproc)PyBobIoFile_SetItem //mp_ass_subscript */
-};
-
-
-static auto s_read = bob::extension::FunctionDoc(
-  "read",
-  "Reads a specific object in the file, or the whole file",
-  "This method reads data from the file. "
-  "If you specified an ``index``, it reads just the object indicated by the index, as you would do using the ``[]`` operator. "
-  "If the ``index`` is not specified, reads the whole contents of the file into a :py:class:`numpy.ndarray`.",
-  true
-)
-.add_prototype("[index]", "data")
-.add_parameter("index", "int", "[optional] The index to the object one wishes to retrieve from the file; negative indexing is supported; if not given, implies retrieval of the whole file contents.")
-.add_return("data", ":py:class:`numpy.ndarray`", "The contents of the file, as array")
-;
-static PyObject* PyBobIoFile_read(PyBobIoFileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_read.kwlist();
-
-  Py_ssize_t i = PY_SSIZE_T_MIN;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "|n", kwlist, &i)) return 0;
-
-  if (i != PY_SSIZE_T_MIN) {
-
-    // reads a specific object inside the file
-
-    if (i < 0) i += self->f->size();
-
-    if (i < 0 || (size_t)i >= self->f->size()) {
-      PyErr_Format(PyExc_IndexError, "file index out of range - `%s' only contains %" PY_FORMAT_SIZE_T "d object(s)", self->f->filename(), self->f->size());
-      return 0;
-    }
-
-    return PyBobIoFile_getIndex(self, i);
-
-  }
-
-  // reads the whole file in a single shot
-
-  const bob::io::base::array::typeinfo& info = self->f->type_all();
-
-  npy_intp shape[NPY_MAXDIMS];
-  for (size_t k=0; k<info.nd; ++k) shape[k] = info.shape[k];
-
-  int type_num = PyBobIo_AsTypenum(info.dtype);
-  if (type_num == NPY_NOTYPE) return 0; ///< failure
-
-  PyObject* retval = PyArray_SimpleNew(info.nd, shape, type_num);
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  bobskin skin((PyArrayObject*)retval, info.dtype);
-  self->f->read_all(skin);
-
-  return Py_BuildValue("O", retval);
-BOB_CATCH_MEMBER(exception_message(self, s_read.name()).c_str(), 0)
-}
-
-
-static auto s_write = bob::extension::FunctionDoc(
-  "write",
-  "Writes the contents of an object to the file",
-  "This method writes data to the file. "
-  "It acts like the given array is the only piece of data that will ever be written to such a file. "
-  "No more data appending may happen after a call to this method.",
-  true
-)
-.add_prototype("data")
-.add_parameter("data", "array_like", "The array to be written into the file; it can be a :py:class:`numpy.ndarray`, a :py:class:`bob.blitz.array` or any other object which can be converted to either of them")
-;
-static PyObject* PyBobIoFile_write(PyBobIoFileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_write.kwlist();
-
-  PyBlitzArrayObject* bz = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&", kwlist, &PyBlitzArray_Converter, &bz)) return 0;
-
-  auto bz_ = make_safe(bz);
-
-  bobskin skin(bz);
-  self->f->write(skin);
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_write.name()).c_str(), 0)
-}
-
-
-static auto s_append = bob::extension::FunctionDoc(
-  "append",
-  "Adds the contents of an object to the file",
-  "This method appends data to the file. "
-  "If the file does not exist, creates a new file, else, makes sure that the inserted array respects the previously set file structure.",
-  true
-)
-.add_prototype("data", "position")
-.add_parameter("data", "array_like", "The array to be written into the file; it can be a :py:class:`numpy.ndarray`, a :py:class:`bob.blitz.array` or any other object which can be converted to either of them")
-.add_return("position", "int", "The current position of the newly written data")
-;
-static PyObject* PyBobIoFile_append(PyBobIoFileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_append.kwlist();
-
-  PyBlitzArrayObject* bz = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&", kwlist, &PyBlitzArray_Converter, &bz)) return 0;
-  auto bz_ = make_safe(bz);
-  Py_ssize_t pos = -1;
-
-  bobskin skin(bz);
-  pos = self->f->append(skin);
-
-  return Py_BuildValue("n", pos);
-BOB_CATCH_MEMBER(exception_message(self, s_append.name()).c_str(), 0)
-}
-
-
-PyObject* PyBobIo_TypeInfoAsTuple (const bob::io::base::array::typeinfo& ti) {
-
-  int type_num = PyBobIo_AsTypenum(ti.dtype);
-  if (type_num == NPY_NOTYPE) return 0;
-
-  PyObject* retval = Py_BuildValue("NNN",
-      reinterpret_cast<PyObject*>(PyArray_DescrFromType(type_num)),
-      PyTuple_New(ti.nd), //shape
-      PyTuple_New(ti.nd)  //strides
-      );
-  if (!retval) return 0;
-
-  PyObject* shape = PyTuple_GET_ITEM(retval, 1);
-  PyObject* stride = PyTuple_GET_ITEM(retval, 2);
-  for (Py_ssize_t i=0; (size_t)i<ti.nd; ++i) {
-    PyTuple_SET_ITEM(shape, i, Py_BuildValue("n", ti.shape[i]));
-    PyTuple_SET_ITEM(stride, i, Py_BuildValue("n", ti.stride[i]));
-  }
-
-  return retval;
-}
-
-static auto s_describe = bob::extension::FunctionDoc(
-  "describe",
-  "Returns a description (dtype, shape, stride) of data at the file",
-  0,
-  true
-)
-.add_prototype("[all]", "dtype, shape, stride")
-.add_parameter("all", "bool", "[Default: ``False``]  If set to ``True``, returns the shape and strides for reading the whole file contents in one shot.")
-.add_return("dtype", ":py:class:`numpy.dtype`", "The data type of the object")
-.add_return("shape", "tuple", "The shape of the object")
-.add_return("stride", "tuple", "The stride of the object")
-;
-static PyObject* PyBobIoFile_describe(PyBobIoFileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static const char* const_kwlist[] = {"all", 0};
-  static char** kwlist = const_cast<char**>(const_kwlist);
-
-  PyObject* all = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O", kwlist, &all)) return 0;
-
-  const bob::io::base::array::typeinfo* info = 0;
-  if (all && PyObject_IsTrue(all)) info = &self->f->type_all();
-  else info = &self->f->type();
-
-  /* Now return type description and tuples with shape and strides */
-  return PyBobIo_TypeInfoAsTuple(*info);
-BOB_CATCH_MEMBER(exception_message(self, s_describe.name()).c_str(), 0)
-}
-
-
-static PyMethodDef PyBobIoFile_methods[] = {
-    {
-      s_read.name(),
-      (PyCFunction)PyBobIoFile_read,
-      METH_VARARGS|METH_KEYWORDS,
-      s_read.doc(),
-    },
-    {
-      s_write.name(),
-      (PyCFunction)PyBobIoFile_write,
-      METH_VARARGS|METH_KEYWORDS,
-      s_write.doc(),
-    },
-    {
-      s_append.name(),
-      (PyCFunction)PyBobIoFile_append,
-      METH_VARARGS|METH_KEYWORDS,
-      s_append.doc(),
-    },
-    {
-      s_describe.name(),
-      (PyCFunction)PyBobIoFile_describe,
-      METH_VARARGS|METH_KEYWORDS,
-      s_describe.doc(),
-    },
-    {0}  /* Sentinel */
-};
-
-/**********************************
- * Definition of Iterator to File *
- **********************************/
-
-PyDoc_STRVAR(s_fileiterator_str, BOB_EXT_MODULE_PREFIX ".File.iter");
-
-/* How to create a new PyBobIoFileIteratorObject */
-static PyObject* PyBobIoFileIterator_New(PyTypeObject* type, PyObject*, PyObject*) {
-
-  /* Allocates the python object itself */
-  PyBobIoFileIteratorObject* self = (PyBobIoFileIteratorObject*)type->tp_alloc(type, 0);
-
-  return reinterpret_cast<PyObject*>(self);
-}
-
-static PyObject* PyBobIoFileIterator_iter (PyBobIoFileIteratorObject* self) {
-  return reinterpret_cast<PyObject*>(self);
-}
-
-static PyObject* PyBobIoFileIterator_next (PyBobIoFileIteratorObject* self) {
-  if ((size_t)self->curpos >= self->pyfile->f->size()) {
-    Py_XDECREF((PyObject*)self->pyfile);
-    self->pyfile = 0;
-    return 0;
-  }
-  return PyBobIoFile_getIndex(self->pyfile, self->curpos++);
-}
-
-static PyObject* PyBobIoFile_iter (PyBobIoFileObject* self) {
-  PyBobIoFileIteratorObject* retval = (PyBobIoFileIteratorObject*)PyBobIoFileIterator_New(&PyBobIoFileIterator_Type, 0, 0);
-  if (!retval) return 0;
-  retval->pyfile = self;
-  retval->curpos = 0;
-  return Py_BuildValue("N", retval);
-}
-
-#if PY_VERSION_HEX >= 0x03000000
-#  define Py_TPFLAGS_HAVE_ITER 0
-#endif
-
-PyTypeObject PyBobIoFileIterator_Type = {
-  PyVarObject_HEAD_INIT(0, 0)
-  0
-};
-
-
-PyTypeObject PyBobIoFile_Type = {
-  PyVarObject_HEAD_INIT(0, 0)
-  0
-};
-
-bool init_File(PyObject* module){
-
-  // initialize the iterator
-  PyBobIoFileIterator_Type.tp_name = s_fileiterator_str;
-  PyBobIoFileIterator_Type.tp_basicsize = sizeof(PyBobIoFileIteratorObject);
-  PyBobIoFileIterator_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER;
-  PyBobIoFileIterator_Type.tp_iter = (getiterfunc)PyBobIoFileIterator_iter;
-  PyBobIoFileIterator_Type.tp_iternext = (iternextfunc)PyBobIoFileIterator_next;
-
-  // initialize the File
-  PyBobIoFile_Type.tp_name = s_file.name();
-  PyBobIoFile_Type.tp_basicsize = sizeof(PyBobIoFileObject);
-  PyBobIoFile_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
-  PyBobIoFile_Type.tp_doc = s_file.doc();
-
-  // set the functions
-  PyBobIoFile_Type.tp_new = PyBobIoFile_New;
-  PyBobIoFile_Type.tp_init = reinterpret_cast<initproc>(PyBobIoFile_init);
-  PyBobIoFile_Type.tp_dealloc = reinterpret_cast<destructor>(PyBobIoFile_Delete);
-  PyBobIoFile_Type.tp_methods = PyBobIoFile_methods;
-  PyBobIoFile_Type.tp_getset = PyBobIoFile_getseters;
-  PyBobIoFile_Type.tp_iter = (getiterfunc)PyBobIoFile_iter;
-
-  PyBobIoFile_Type.tp_str = reinterpret_cast<reprfunc>(PyBobIoFile_repr);
-  PyBobIoFile_Type.tp_repr = reinterpret_cast<reprfunc>(PyBobIoFile_repr);
-  PyBobIoFile_Type.tp_as_mapping = &PyBobIoFile_Mapping;
-
-
-  // check that everything is fine
-  if (PyType_Ready(&PyBobIoFile_Type) < 0)
-    return false;
-  if (PyType_Ready(&PyBobIoFileIterator_Type) < 0)
-    return false;
-
-  // add the type to the module
-  Py_INCREF(&PyBobIoFile_Type);
-  bool success = PyModule_AddObject(module, s_file.name(), (PyObject*)&PyBobIoFile_Type) >= 0;
-  if (!success) return false;
-  Py_INCREF(&PyBobIoFileIterator_Type);
-  success = PyModule_AddObject(module, s_fileiterator_str, (PyObject*)&PyBobIoFileIterator_Type) >= 0;
-  return success;
-}
diff --git a/bob/io/base/hdf5.cpp b/bob/io/base/hdf5.cpp
deleted file mode 100644
index 42347bd..0000000
--- a/bob/io/base/hdf5.cpp
+++ /dev/null
@@ -1,2137 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Tue 12 Nov 18:19:22 2013
- *
- * @brief Bindings to bob::io::base::HDF5File
- */
-
-#define BOB_IO_BASE_MODULE
-#include <bob.io.base/api.h>
-
-#include <boost/make_shared.hpp>
-#include <numpy/arrayobject.h>
-#include <bob.blitz/cppapi.h>
-#include <bob.blitz/cleanup.h>
-#include <bob.extension/documentation.h>
-#include <stdexcept>
-#include <cstring>
-
-/* Creates an exception message including the name of the given file, if possible */
-inline const std::string exception_message(PyBobIoHDF5FileObject* self, const std::string& name){
-  std::ostringstream str;
-  str << name << " (";
-  try{
-    str << "'" << self->f->filename() << "'";
-  } catch (...){
-    str << "<unkown>";
-  }
-  str << ")";
-  return  str.str();
-}
-
-static auto s_hdf5file = bob::extension::ClassDoc(
-  "HDF5File",
-  "Reads and writes data to HDF5 files.",
-  "HDF5 stands for Hierarchical Data Format version 5. "
-  "It is a flexible, binary file format that allows one to store and read data efficiently into or from files. "
-  "It is a cross-platform, cross-architecture format.\n\n"
-  "Objects of this class allows users to read and write data from and to files in HDF5 format. "
-  "For an introduction to HDF5, visit the `HDF5 Website <http://www.hdfgroup.org/HDF5>`_."
-)
-.add_constructor(
-  bob::extension::FunctionDoc(
-    "HDF5File",
-    "Opens an HFF5 file for reading, writing or appending.",
-    "For the ``open`` mode, use ``'r'`` for read-only ``'a'`` for read/write/append, ``'w'`` for read/write/truncate or ``'x'`` for (read/write/exclusive). "
-    "When another :py:class:`HDF5File` object is given, a shallow copy is created, pointing to the same file."
-  )
-  .add_prototype("filename, [mode]","")
-  .add_prototype("hdf5", "")
-  .add_parameter("filename", "str", "The file path to the file you want to open for reading or writing")
-  .add_parameter("mode", "one of ('r', 'w', 'a', 'x')", "[Default: ``'r'``]  The opening mode")
-  .add_parameter("hdf5", ":py:class:`HDF5File`", "An HDF5 file to copy-construct")
-);
-
-
-int PyBobIoHDF5File_Check(PyObject* o) {
-  if (!o) return 0;
-  return PyObject_IsInstance(o, reinterpret_cast<PyObject*>(&PyBobIoHDF5File_Type));
-}
-
-int PyBobIoHDF5File_Converter(PyObject* o, PyBobIoHDF5FileObject** a) {
-  if (!PyBobIoHDF5File_Check(o)) return 0;
-  Py_INCREF(o);
-  (*a) = reinterpret_cast<PyBobIoHDF5FileObject*>(o);
-  return 1;
-}
-
-/* How to create a new PyBobIoHDF5FileObject */
-static PyObject* PyBobIoHDF5File_New(PyTypeObject* type, PyObject*, PyObject*) {
-
-  /* Allocates the python object itself */
-  PyBobIoHDF5FileObject* self = (PyBobIoHDF5FileObject*)type->tp_alloc(type, 0);
-
-  self->f.reset();
-
-  return reinterpret_cast<PyObject*>(self);
-}
-
-static void PyBobIoHDF5File_Delete (PyBobIoHDF5FileObject* o) {
-
-  o->f.reset();
-  Py_TYPE(o)->tp_free((PyObject*)o);
-}
-
-static bob::io::base::HDF5File::mode_t mode_from_char (char mode) {
-
-  bob::io::base::HDF5File::mode_t new_mode = bob::io::base::HDF5File::inout;
-
-  switch (mode) {
-    case 'r': new_mode = bob::io::base::HDF5File::in; break;
-    case 'a': new_mode = bob::io::base::HDF5File::inout; break;
-    case 'w': new_mode = bob::io::base::HDF5File::trunc; break;
-    case 'x': new_mode = bob::io::base::HDF5File::excl; break;
-    default:
-      PyErr_SetString(PyExc_RuntimeError, "Supported flags are 'r' (read-only), 'a' (read/write/append), 'w' (read/write/truncate) or 'x' (read/write/exclusive)");
-  }
-
-  return new_mode;
-
-}
-
-/* The __init__(self) method */
-static int PyBobIoHDF5File_init(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist1 = s_hdf5file.kwlist(0);
-  static char** kwlist2 = s_hdf5file.kwlist(1);
-
-  // get the number of command line arguments
-  Py_ssize_t nargs = (args?PyTuple_Size(args):0) + (kwds?PyDict_Size(kwds):0);
-
-  if (!nargs){
-    // at least one argument is required
-    PyErr_Format(PyExc_TypeError, "`%s' constructor requires at least one parameter", Py_TYPE(self)->tp_name);
-    return -1;
-  } // nargs == 0
-
-  PyObject* k = Py_BuildValue("s", kwlist2[0]);
-  auto k_ = make_safe(k);
-  if (
-    (kwds && PyDict_Contains(kwds, k)) ||
-    (args && PyBobIoHDF5File_Check(PyTuple_GET_ITEM(args, 0)))
-  ){
-    PyBobIoHDF5FileObject* other;
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&", kwlist2, &PyBobIoHDF5File_Converter, &other))
-      return -1;
-    auto other_ = make_safe(other);
-    self->f = other->f;
-    return 0;
-  }
-
-#if PY_VERSION_HEX >= 0x03000000
-#  define MODE_CHAR "C"
-  int mode = 'r';
-#else
-#  define MODE_CHAR "c"
-  char mode = 'r';
-#endif
-
-  const char* filename;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&|" MODE_CHAR, kwlist1,
-        &PyBobIo_FilenameConverter, &filename, &mode))
-    return -1;
-
-#undef MODE_CHAR
-
-  if (mode != 'r' && mode != 'w' && mode != 'a' && mode != 'x') {
-    PyErr_Format(PyExc_ValueError, "file open mode string should have 1 element and be either 'r' (read), 'w' (write), 'a' (append), 'x' (exclusive)");
-    return -1;
-  }
-  bob::io::base::HDF5File::mode_t mode_mode = mode_from_char(mode);
-  if (PyErr_Occurred()) return -1;
-
-  self->f.reset(new bob::io::base::HDF5File(filename, mode_mode));
-  return 0; ///< SUCCESS
-BOB_CATCH_MEMBER("hdf5 constructor", -1)
-}
-
-
-static PyObject* PyBobIoHDF5File_repr(PyBobIoHDF5FileObject* self) {
-BOB_TRY
-  return PyString_FromFormat("%s(filename='%s')", Py_TYPE(self)->tp_name, self->f->filename().c_str());
-BOB_CATCH_MEMBER("__repr__", 0)
-}
-
-
-static auto s_flush = bob::extension::FunctionDoc(
-  "flush",
-  "Flushes the content of the HDF5 file to disk",
-  "When the HDF5File is open for writing, this function synchronizes the contents on the disk with the one from the file. "
-  "When the file is open for reading, nothing happens.",
-  true
-)
-  .add_prototype("")
-;
-static PyObject* PyBobIoHDF5File_flush(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_flush.kwlist();
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "", kwlist)) return 0;
-
-  self->f->flush();
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_flush.name()).c_str(), 0)
-}
-
-
-static auto s_close = bob::extension::FunctionDoc(
-  "close",
-  "Closes this file",
-  "This function closes the HDF5File after flushing all its contents to disk. "
-  "After the HDF5File is closed, any operation on it will result in an exception.",
-  true
-)
-.add_prototype("")
-;
-static PyObject* PyBobIoHDF5File_close(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_close.kwlist();
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "", kwlist)) return 0;
-
-  self->f->close();
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_close.name()).c_str(), 0);
-}
-
-
-static auto s_cd = bob::extension::FunctionDoc(
-  "cd",
-  "Changes the current prefix path",
-  "When this object is created the prefix path is empty, which means all following paths to data objects should be given using the full path. "
-  "If you set the ``path`` to a different value, it will be used as a prefix to any subsequent operation until you reset it. "
-  "If ``path`` starts with ``'/'``, it is treated as an absolute path. "
-  "If the value is relative, it is added to the current path; ``'..'`` and ``'.'`` are supported. "
-  "If it is absolute, it causes the prefix to be reset.\n\n"
-  "..note:: All operations taking a relative path, following a :py:func:`cd`, will be considered relative to the value defined by the :py:attr:`cwd` property of this object.",
-  true
-)
-.add_prototype("path")
-.add_parameter("path", "str", "The path to change directories to")
-;
-
-static PyObject* PyBobIoHDF5File_changeDirectory(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_cd.kwlist();
-
-  const char* path = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &path)) return 0;
-
-  self->f->cd(path);
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_cd.name()).c_str(), 0)
-}
-
-
-static auto s_has_group = bob::extension::FunctionDoc(
-  "has_group",
-  "Checks if a path (group) exists inside a file",
-  "This method does not work for datasets, only for directories. "
-  "If the given path is relative, it is take w.r.t. to the current working directory.",
-  true
-)
-.add_prototype("path")
-.add_parameter("path", "str", "The path to check")
-;
-static PyObject* PyBobIoHDF5File_hasGroup(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_has_group.kwlist();
-
-  const char* path = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &path)) return 0;
-
-  if (self->f->hasGroup(path)) Py_RETURN_TRUE;
-  Py_RETURN_FALSE;
-BOB_CATCH_MEMBER(exception_message(self, s_has_group.name()).c_str(), 0)
-}
-
-
-static auto s_create_group = bob::extension::FunctionDoc(
-  "create_group",
-  "Creates a new path (group) inside the file",
-  "A relative path is taken w.r.t. to the current directory. "
-  "If the directory already exists (check it with :py:meth:`has_group`), an exception will be raised.",
-  true
-)
-.add_prototype("path")
-.add_parameter("path", "str", "The path to create.")
-;
-static PyObject* PyBobIoHDF5File_createGroup(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_create_group.kwlist();
-
-  const char* path = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &path)) return 0;
-
-  self->f->createGroup(path);
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_create_group.name()).c_str(), 0)
-}
-
-
-static auto s_has_dataset = bob::extension::FunctionDoc(
-  "has_dataset",
-  "Checks if a dataset exists inside a file",
-  "Checks if a dataset exists inside a file, on the specified path. "
-  "If the given path is relative, it is take w.r.t. to the current working directory.\n\n"
-  ".. note:: The functions :py:meth:`has_dataset` and :py:meth:`has_key` are synonyms. "
-  "You can also use the Python's ``in`` operator instead of :py:meth:`has_key`: ``key in hdf5file``.",
-  true
-)
-.add_prototype("key")
-.add_parameter("key", "str", "The dataset path to check")
-;
-auto s_has_key = s_has_dataset.clone("has_key");
-static PyObject* PyBobIoHDF5File_hasDataset(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_has_dataset.kwlist();
-
-  const char* key = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &key)) return 0;
-
-  if (self->f->contains(key)) Py_RETURN_TRUE;
-
-  Py_RETURN_FALSE;
-BOB_CATCH_MEMBER(exception_message(self, s_has_dataset.name()).c_str(), 0)
-}
-
-static bob::io::base::hdf5type PyBobIo_H5FromTypenum (int type_num) {
-
-  switch(type_num) {
-    case NPY_STRING:     return bob::io::base::s;
-    case NPY_BOOL:       return bob::io::base::b;
-    case NPY_INT8:       return bob::io::base::i8;
-    case NPY_INT16:      return bob::io::base::i16;
-    case NPY_INT32:      return bob::io::base::i32;
-    case NPY_INT64:      return bob::io::base::i64;
-    case NPY_UINT8:      return bob::io::base::u8;
-    case NPY_UINT16:     return bob::io::base::u16;
-    case NPY_UINT32:     return bob::io::base::u32;
-    case NPY_UINT64:     return bob::io::base::u64;
-    case NPY_FLOAT32:    return bob::io::base::f32;
-    case NPY_FLOAT64:    return bob::io::base::f64;
-#ifdef NPY_FLOAT128
-    case NPY_FLOAT128:   return bob::io::base::f128;
-#endif
-    case NPY_COMPLEX64:  return bob::io::base::c64;
-    case NPY_COMPLEX128: return bob::io::base::c128;
-#ifdef NPY_COMPLEX256
-    case NPY_COMPLEX256: return bob::io::base::c256;
-#endif
-#if defined(__LP64__) || defined(__APPLE__)
-    case NPY_LONGLONG:
-                         switch (NPY_BITSOF_LONGLONG) {
-                           case 8: return bob::io::base::i8;
-                           case 16: return bob::io::base::i16;
-                           case 32: return bob::io::base::i32;
-                           case 64: return bob::io::base::i64;
-                           default: return bob::io::base::unsupported;
-                         }
-                         break;
-    case NPY_ULONGLONG:
-                         switch (NPY_BITSOF_LONGLONG) {
-                           case 8: return bob::io::base::u8;
-                           case 16: return bob::io::base::u16;
-                           case 32: return bob::io::base::u32;
-                           case 64: return bob::io::base::u64;
-                           default: return bob::io::base::unsupported;
-                         }
-                         break;
-#endif
-    default:             return bob::io::base::unsupported;
-  }
-
-}
-
-static int PyBobIo_H5AsTypenum (bob::io::base::hdf5type type) {
-
-  switch(type) {
-    case bob::io::base::s:    return NPY_STRING;
-    case bob::io::base::b:    return NPY_BOOL;
-    case bob::io::base::i8:   return NPY_INT8;
-    case bob::io::base::i16:  return NPY_INT16;
-    case bob::io::base::i32:  return NPY_INT32;
-    case bob::io::base::i64:  return NPY_INT64;
-    case bob::io::base::u8:   return NPY_UINT8;
-    case bob::io::base::u16:  return NPY_UINT16;
-    case bob::io::base::u32:  return NPY_UINT32;
-    case bob::io::base::u64:  return NPY_UINT64;
-    case bob::io::base::f32:  return NPY_FLOAT32;
-    case bob::io::base::f64:  return NPY_FLOAT64;
-#ifdef NPY_FLOAT128
-    case bob::io::base::f128: return NPY_FLOAT128;
-#endif
-    case bob::io::base::c64:  return NPY_COMPLEX64;
-    case bob::io::base::c128: return NPY_COMPLEX128;
-#ifdef NPY_COMPLEX256
-    case bob::io::base::c256: return NPY_COMPLEX256;
-#endif
-    default:            return NPY_NOTYPE;
-  }
-
-}
-
-static PyObject* PyBobIo_HDF5TypeAsTuple (const bob::io::base::HDF5Type& t) {
-
-  const bob::io::base::HDF5Shape& sh = t.shape();
-  size_t ndim = sh.n();
-  const hsize_t* shptr = sh.get();
-
-  int type_num = PyBobIo_H5AsTypenum(t.type());
-  if (type_num == NPY_NOTYPE) {
-    PyErr_Format(PyExc_TypeError, "unsupported HDF5 element type (%d) found during conversion to numpy type number", (int)t.type());
-    return 0;
-  }
-
-  PyObject* dtype = reinterpret_cast<PyObject*>(PyArray_DescrFromType(type_num));
-  if (!dtype) return 0;
-  auto dtype_ = make_safe(dtype);
-
-  PyObject* shape = PyTuple_New(ndim);
-  if (!shape) return 0;
-  auto shape_ = make_safe(shape);
-
-  PyObject* retval = Py_BuildValue("OO", dtype, shape);
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  for (Py_ssize_t i=0; i<(Py_ssize_t)ndim; ++i) {
-    PyObject* value = Py_BuildValue("n", shptr[i]);
-    if (!value) return 0;
-    PyTuple_SET_ITEM(shape, i, value);
-  }
-
-  return Py_BuildValue("O", retval);
-
-}
-
-static PyObject* PyBobIo_HDF5DescriptorAsTuple (const bob::io::base::HDF5Descriptor& d) {
-  return Py_BuildValue("NnO",
-    PyBobIo_HDF5TypeAsTuple(d.type),
-    d.size,
-    d.expandable? Py_True : Py_False
-  ); //steals references, except for True/False
-}
-
-
-static auto s_describe = bob::extension::FunctionDoc(
-  "describe",
-  "Describes a dataset type/shape, if it exists inside a file",
-  "If a given ``key`` to an HDF5 dataset exists inside the file, returns a type description of objects recorded in such a dataset, otherwise, raises an exception. "
-  "The returned value type is a list of tuples (HDF5Type, number-of-objects, expandable) describing the capabilities if the file is read using these formats. \n\n",
-  true
-)
-.add_prototype("key", "[(hdf5type, size, expandable)]")
-.add_parameter("key", "str", "The dataset path to describe")
-.add_return("hdf5type", "tuple", "The HDF5Type of the returned array")
-.add_return("size", "int", "The number of objects in the dataset")
-.add_return("expandable", "bool", "Defines if this object can be resized.")
-;
-static PyObject* PyBobIoHDF5File_describe(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_describe.kwlist();
-
-  const char* key = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &key)) return 0;
-
-  const std::vector<bob::io::base::HDF5Descriptor>& dv = self->f->describe(key);
-  PyObject* retval = PyList_New(dv.size());
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  for (size_t k=0; k<dv.size(); ++k) {
-    PyObject* entry = PyBobIo_HDF5DescriptorAsTuple(dv[k]);
-    if (!entry) return 0;
-    PyList_SET_ITEM(retval, k, entry);
-  }
-
-  return Py_BuildValue("O", retval);
-BOB_CATCH_MEMBER(exception_message(self, s_describe.name()).c_str(), 0)
-}
-
-
-static auto s_unlink = bob::extension::FunctionDoc(
-  "unlink",
-  "Unlinks datasets inside the file making them invisible",
-  "If a given path to an HDF5 dataset exists inside the file, unlinks it."
-  "Please note this will note remove the data from the file, just make it inaccessible. "
-  "If you wish to cleanup, save the reacheable objects from this file to another :py:class:`HDF5File` object using :py:meth:`copy`, for example.",
-  true
-)
-.add_prototype("key")
-.add_parameter("key", "str", "The dataset path to unlink")
-;
-static PyObject* PyBobIoHDF5File_unlink(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_unlink.kwlist();
-
-  const char* key = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &key)) return 0;
-
-  self->f->unlink(key);
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_unlink.name()).c_str(), 0)
-}
-
-
-static auto s_rename = bob::extension::FunctionDoc(
-  "rename",
-  "Renames datasets in a file",
-  0,
-  true
-)
-.add_prototype("from, to")
-.add_parameter("from", "str", "The path to the data to be renamed")
-.add_parameter("to", "str", "The new name of the dataset")
-;
-static PyObject* PyBobIoHDF5File_rename(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_rename.kwlist();
-
-  const char* from = 0;
-  const char* to = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist, &from, &to)) return 0;
-
-  self->f->rename(from, to);
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_rename.name()).c_str(), 0)
-}
-
-
-static auto s_paths = bob::extension::FunctionDoc(
-  "paths",
-  "Lists datasets available inside this file",
-  "Returns all paths to datasets available inside this file, stored under the current working directory. "
-  "If ``relative`` is set to ``True``, the returned paths are relative to the current working directory, otherwise they are absolute.\n\n"
-  ".. note:: The functions :py:meth:`keys` and :py:meth:`paths` are synonyms.",
-  true
-)
-.add_prototype("[relative]", "paths")
-.add_parameter("relative", "bool", "[Default: ``False``] If set to ``True``, the returned paths are relative to the current working directory, otherwise they are absolute")
-.add_return("paths", "[str]", "A list of paths inside this file")
-;
-auto s_keys = s_paths.clone("keys");
-static PyObject* PyBobIoHDF5File_paths(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_paths.kwlist();
-
-  PyObject* pyrel = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O", kwlist, &pyrel)) return 0;
-
-  bool relative = false;
-  if (pyrel && PyObject_IsTrue(pyrel)) relative = true;
-
-  std::vector<std::string> values;
-  self->f->paths(values, relative);
-  PyObject* retval = PyList_New(values.size());
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-  for (size_t i=0; i<values.size(); ++i) {
-    PyList_SET_ITEM(retval, i, Py_BuildValue("s", values[i].c_str()));
-  }
-
-  return Py_BuildValue("O", retval);
-BOB_CATCH_MEMBER(exception_message(self, s_paths.name()).c_str(), 0)
-}
-
-
-static auto s_sub_groups = bob::extension::FunctionDoc(
-  "sub_groups",
-  "Lists groups (directories) in the current file",
-  0,
-  true
-)
-.add_prototype("[relative], [recursive]", "groups")
-.add_parameter("relative", "bool", "[Default: ``False``] If set to ``True``, the returned sub-groups are relative to the current working directory, otherwise they are absolute")
-.add_parameter("recursive", "bool", "[Default: ``True``] If set to ``False``, the returned sub-groups   are only the ones in the current directory, otherwise recurses down the directory structure")
-.add_return("groups", "[str]", "The list of directories (groups) inside this file")
-;
-static PyObject* PyBobIoHDF5File_subGroups(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_sub_groups.kwlist();
-
-  PyObject* pyrel = 0;
-  PyObject* pyrec = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OO", kwlist, &pyrel, &pyrec)) return 0;
-
-  bool relative = (pyrel && PyObject_IsTrue(pyrel));
-  bool recursive = (!pyrec || PyObject_IsTrue(pyrec));
-
-  std::vector<std::string> values;
-  self->f->sub_groups(values, relative, recursive);
-  PyObject* retval = PyList_New(values.size());
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-  for (size_t i=0; i<values.size(); ++i) {
-    PyList_SET_ITEM(retval, i, Py_BuildValue("s", values[i].c_str()));
-  }
-
-  return Py_BuildValue("O", retval);
-BOB_CATCH_MEMBER(exception_message(self, s_sub_groups.name()).c_str(), 0)
-}
-
-
-static PyObject* PyBobIoHDF5File_Xread(PyBobIoHDF5FileObject* self, const char* p, int descriptor, int pos) {
-
-  const std::vector<bob::io::base::HDF5Descriptor> D = self->f->describe(p);
-
-  //last descriptor always contains the full readout.
-  const bob::io::base::HDF5Type& type = D[descriptor].type;
-  const bob::io::base::HDF5Shape& shape = type.shape();
-
-  if (shape.n() == 1 && shape[0] == 1) { //read as scalar
-    switch(type.type()) {
-      case bob::io::base::s:
-        return Py_BuildValue("s", self->f->read<std::string>(p, pos).c_str());
-      case bob::io::base::b:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<bool>(p, pos));
-      case bob::io::base::i8:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<int8_t>(p, pos));
-      case bob::io::base::i16:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<int16_t>(p, pos));
-      case bob::io::base::i32:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<int32_t>(p, pos));
-      case bob::io::base::i64:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<int64_t>(p, pos));
-      case bob::io::base::u8:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<uint8_t>(p, pos));
-      case bob::io::base::u16:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<uint16_t>(p, pos));
-      case bob::io::base::u32:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<uint32_t>(p, pos));
-      case bob::io::base::u64:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<uint64_t>(p, pos));
-      case bob::io::base::f32:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<float>(p, pos));
-      case bob::io::base::f64:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<double>(p, pos));
-      case bob::io::base::f128:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<long double>(p, pos));
-      case bob::io::base::c64:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<std::complex<float> >(p, pos));
-      case bob::io::base::c128:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<std::complex<double> >(p, pos));
-      case bob::io::base::c256:
-        return PyBlitzArrayCxx_FromCScalar(self->f->read<std::complex<long double> >(p, pos));
-      default:
-        PyErr_Format(PyExc_TypeError, "unsupported HDF5 type: %s", type.str().c_str());
-        return 0;
-    }
-  }
-
-  //read as an numpy array
-  int type_num = PyBobIo_H5AsTypenum(type.type());
-  if (type_num == NPY_NOTYPE) return 0; ///< failure
-
-  npy_intp pyshape[NPY_MAXDIMS];
-  for (size_t k=0; k<shape.n(); ++k) pyshape[k] = shape.get()[k];
-
-  PyObject* retval = PyArray_SimpleNew(shape.n(), pyshape, type_num);
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  self->f->read_buffer(p, pos, type, PyArray_DATA((PyArrayObject*)retval));
-
-  return Py_BuildValue("O", retval);
-}
-
-
-static auto s_read = bob::extension::FunctionDoc(
-  "read",
-  "Reads whole datasets from the file",
-  "This function reads full data sets from this file. "
-  "The data type is dependent on the stored data, but is generally a :py:class:`numpy.ndarray`.\n\n"
-  ".. note:: The functions :py:func:`read` and :py:func:`get` are synonyms."
-)
-.add_prototype("key", "data")
-.add_parameter("key", "str", "The path to the dataset to read data from; can be an absolute value (starting with a leading ``'/'``) or relative to the current working directory :py:attr:`cwd`")
-.add_return("data", ":py:class:`numpy.ndarray` or other", "The data read from this file at the given key")
-;
-auto s_get = s_read.clone("get");
-static PyObject* PyBobIoHDF5File_read(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_read.kwlist();
-
-  const char* key = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &key)) return 0;
-
-  return PyBobIoHDF5File_Xread(self, key, 1, 0);
-BOB_CATCH_MEMBER(exception_message(self, s_read.name()).c_str(), 0)
-}
-
-
-static auto s_lread = bob::extension::FunctionDoc(
-  "lread",
-  "Reads some contents of the dataset",
-  "This method reads contents from a dataset, treating the N-dimensional dataset like a container for multiple objects with N-1 dimensions. "
-  "It returns a single :py:class:`numpy.ndarray` in case ``pos`` is set to a value >= 0, or a list of arrays otherwise."
-)
-.add_prototype("key, [pos]", "data")
-.add_parameter("key", "str", "The path to the dataset to read data from, can be an absolute value (starting with a leading ``'/'``) or relative to the current working directory :py:attr:`cwd`")
-.add_parameter("pos", "int", "If given and >= 0 returns the data object with the given index, otherwise returns a list by reading all objects in sequence")
-.add_return("data", ":py:class:`numpy.ndarray` or [:py:class:`numpy.ndarray`]", "The data read from this file")
-;
-static PyObject* PyBobIoHDF5File_listRead(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_lread.kwlist();
-
-  const char* key = 0;
-  Py_ssize_t pos = -1;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|n", kwlist, &key, &pos)) return 0;
-
-  if (pos >= 0) return PyBobIoHDF5File_Xread(self, key, 0, pos);
-
-  //otherwise returns as a list
-  const std::vector<bob::io::base::HDF5Descriptor>& D = self->f->describe(key);
-
-  PyObject* retval = PyList_New(D[0].size);
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  for (uint64_t k=0; k<D[0].size; ++k) {
-    PyObject* item = PyBobIoHDF5File_Xread(self, key, 0, k);
-    if (!item) return 0;
-    PyList_SET_ITEM(retval, k, item);
-  }
-
-  return Py_BuildValue("O", retval);
-BOB_CATCH_MEMBER(exception_message(self, s_lread.name()).c_str(), 0)
-}
-
-
-/**
- * Sets at 't', the type of the object 'o' according to our support types.
- * Raise in case of problems. Furthermore, returns 'true' if the object is as
- * simple scalar.
- */
-
-static void null_char_array_deleter(char*) {}
-
-#if PY_VERSION_HEX >= 0x03000000
-static void char_array_deleter(char* o) { delete[] o; }
-#endif
-
-static boost::shared_ptr<char> PyBobIo_GetString(PyObject* o) {
-
-#if PY_VERSION_HEX < 0x03000000
-
-  return boost::shared_ptr<char>(PyString_AsString(o), null_char_array_deleter);
-
-#else
-
-  if (PyBytes_Check(o)) {
-    //fast way out
-    return boost::shared_ptr<char>(PyBytes_AsString(o), null_char_array_deleter);
-  }
-
-  PyObject* bytes = 0;
-
-  if (PyUnicode_Check(o)) {
-    //re-encode using utf-8
-    bytes = PyUnicode_AsEncodedString(o, "utf-8", "strict");
-  }
-  else {
-    //tries coercion
-    bytes = PyObject_Bytes(o);
-  }
-  auto bytes_ = make_safe(bytes); ///< protects acquired resource
-
-  Py_ssize_t length = PyBytes_GET_SIZE(bytes)+1;
-  char* copy = new char[length];
-  std::strncpy(copy, PyBytes_AsString(bytes), length);
-
-  return boost::shared_ptr<char>(copy, char_array_deleter);
-
-#endif
-
-}
-
-static int PyBobIoHDF5File_setStringType(bob::io::base::HDF5Type& t, PyObject* o) {
-  auto value = PyBobIo_GetString(o);
-  if (!value) return -1;
-  t = bob::io::base::HDF5Type(value.get());
-  return 0;
-}
-
-template <typename T> int PyBobIoHDF5File_setType(bob::io::base::HDF5Type& t) {
-  T v;
-  t = bob::io::base::HDF5Type(v);
-  return 0;
-}
-
-/**
- * A function to check for python scalars that works with numpy-1.6.x
- */
-static bool PyBobIoHDF5File_isPythonScalar(PyObject* obj) {
-  return (
-    PyBool_Check(obj) ||
-#if PY_VERSION_HEX < 0x03000000
-    PyString_Check(obj) ||
-#else
-    PyBytes_Check(obj) ||
-#endif
-    PyUnicode_Check(obj) ||
-#if PY_VERSION_HEX < 0x03000000
-    PyInt_Check(obj) ||
-#endif
-    PyLong_Check(obj) ||
-    PyFloat_Check(obj) ||
-    PyComplex_Check(obj)
-    );
-}
-
-/**
- * Returns the type of object `op' is - a scalar (return value = 0), a
- * bob.blitz.array (return value = 1), a numpy.ndarray (return value = 2), an
- * object which is convertible to a numpy.ndarray (return value = 3) or returns
- * -1 if the object cannot be converted. No error is set on the python stack.
- *
- * If the object is convertible into a numpy.ndarray, then it is converted into
- * a numpy ndarray and the resulting object is placed in `converted'. If
- * `*converted' is set to 0 (NULL), then we don't try a conversion, returning
- * -1.
- */
-static int PyBobIoHDF5File_getObjectType(PyObject* o, bob::io::base::HDF5Type& t,
-    PyObject** converted=0) {
-
-  if (PyArray_IsScalar(o, Generic) || PyBobIoHDF5File_isPythonScalar(o)) {
-
-    if (PyArray_IsScalar(o, String))
-      return PyBobIoHDF5File_setStringType(t, o);
-
-    else if (PyBool_Check(o))
-      return PyBobIoHDF5File_setType<bool>(t);
-
-#if PY_VERSION_HEX < 0x03000000
-    else if (PyString_Check(o))
-      return PyBobIoHDF5File_setStringType(t, o);
-
-#else
-    else if (PyBytes_Check(o))
-      return PyBobIoHDF5File_setStringType(t, o);
-
-#endif
-    else if (PyUnicode_Check(o))
-      return PyBobIoHDF5File_setStringType(t, o);
-
-#if PY_VERSION_HEX < 0x03000000
-    else if (PyInt_Check(o))
-      return PyBobIoHDF5File_setType<int32_t>(t);
-
-#endif
-    else if (PyLong_Check(o))
-      return PyBobIoHDF5File_setType<int64_t>(t);
-
-    else if (PyFloat_Check(o))
-      return PyBobIoHDF5File_setType<double>(t);
-
-    else if (PyComplex_Check(o))
-      return PyBobIoHDF5File_setType<std::complex<double> >(t);
-
-    else if (PyArray_IsScalar(o, Bool))
-      return PyBobIoHDF5File_setType<bool>(t);
-
-    else if (PyArray_IsScalar(o, Int8))
-      return PyBobIoHDF5File_setType<int8_t>(t);
-
-    else if (PyArray_IsScalar(o, UInt8))
-      return PyBobIoHDF5File_setType<uint8_t>(t);
-
-    else if (PyArray_IsScalar(o, Int16))
-      return PyBobIoHDF5File_setType<int16_t>(t);
-
-    else if (PyArray_IsScalar(o, UInt16))
-      return PyBobIoHDF5File_setType<uint16_t>(t);
-
-    else if (PyArray_IsScalar(o, Int32))
-      return PyBobIoHDF5File_setType<int32_t>(t);
-
-    else if (PyArray_IsScalar(o, UInt32))
-      return PyBobIoHDF5File_setType<uint32_t>(t);
-
-    else if (PyArray_IsScalar(o, Int64))
-      return PyBobIoHDF5File_setType<int64_t>(t);
-
-    else if (PyArray_IsScalar(o, UInt64))
-      return PyBobIoHDF5File_setType<uint64_t>(t);
-
-    else if (PyArray_IsScalar(o, Float))
-      return PyBobIoHDF5File_setType<float>(t);
-
-    else if (PyArray_IsScalar(o, Double))
-      return PyBobIoHDF5File_setType<double>(t);
-
-    else if (PyArray_IsScalar(o, LongDouble))
-      return PyBobIoHDF5File_setType<long double>(t);
-
-    else if (PyArray_IsScalar(o, CFloat))
-      return PyBobIoHDF5File_setType<std::complex<float> >(t);
-
-    else if (PyArray_IsScalar(o, CDouble))
-      return PyBobIoHDF5File_setType<std::complex<double> >(t);
-
-    else if (PyArray_IsScalar(o, CLongDouble))
-      return PyBobIoHDF5File_setType<std::complex<long double> >(t);
-
-    //if you get to this, point, it is an unsupported scalar
-    return -1;
-
-  }
-
-  else if (PyBlitzArray_Check(o)) {
-
-    PyBlitzArrayObject* bz = reinterpret_cast<PyBlitzArrayObject*>(o);
-    bob::io::base::hdf5type h5type = PyBobIo_H5FromTypenum(bz->type_num);
-    if (h5type == bob::io::base::unsupported) return -1;
-    bob::io::base::HDF5Shape h5shape(bz->ndim, bz->shape);
-    t = bob::io::base::HDF5Type(h5type, h5shape);
-    return 1;
-
-  }
-
-  else if (PyArray_CheckExact(o) && PyArray_ISCARRAY_RO((PyArrayObject*)o)) {
-
-    PyArrayObject* np = reinterpret_cast<PyArrayObject*>(o);
-    bob::io::base::hdf5type h5type = PyBobIo_H5FromTypenum(PyArray_DESCR(np)->type_num);
-    if (h5type == bob::io::base::unsupported) return -1;
-    bob::io::base::HDF5Shape h5shape(PyArray_NDIM(np), PyArray_DIMS(np));
-    t = bob::io::base::HDF5Type(h5type, h5shape);
-    return 2;
-
-  }
-
-  else if (converted) {
-
-    *converted = PyArray_FromAny(o, 0, 1, 0,
-#if     NPY_FEATURE_VERSION >= NUMPY17_API /* NumPy C-API version >= 1.7 */
-        NPY_ARRAY_CARRAY_RO,
-#       else
-        NPY_CARRAY_RO,
-#       endif
-        0);
-    if (!*converted) return -1; ///< error condition
-
-    PyArrayObject* np = reinterpret_cast<PyArrayObject*>(*converted);
-    bob::io::base::hdf5type h5type = PyBobIo_H5FromTypenum(PyArray_DESCR(np)->type_num);
-    if (h5type == bob::io::base::unsupported) {
-      Py_CLEAR(*converted);
-      return -1;
-    }
-    bob::io::base::HDF5Shape h5shape(PyArray_NDIM(np), PyArray_DIMS(np));
-    t = bob::io::base::HDF5Type(h5type, h5shape);
-    return 3;
-
-  }
-
-  //if you get to this, point, it is an unsupported type
-  return -1;
-
-}
-
-template <typename T>
-static PyObject* PyBobIoHDF5File_replaceScalar(PyBobIoHDF5FileObject* self,
-    const char* path, Py_ssize_t pos, PyObject* o) {
-
-  T value = PyBlitzArrayCxx_AsCScalar<T>(o);
-  if (PyErr_Occurred()) return 0;
-  self->f->replace(path, pos, value);
-
-  Py_RETURN_NONE;
-
-}
-
-
-static auto s_replace = bob::extension::FunctionDoc(
-  "replace",
-  "Modifies the value of a scalar/array in a dataset.",
-  0,
-  true
-)
-.add_prototype("path, pos, data")
-.add_parameter("path", "str", "The path to the dataset to read data from; can be an absolute value (starting with a leading ``'/'``) or relative to the current working directory :py:attr:`cwd`")
-.add_parameter("pos", "int", "Position, within the dataset, of the object to be replaced; the object position on the dataset must exist, or an exception is raised")
-.add_parameter("data", ":py:class:`numpy.ndarray` or scalar", "Object to replace the value with; this value must be compatible with the typing information on the dataset, or an exception will be raised")
-;
-static PyObject* PyBobIoHDF5File_replace(PyBobIoHDF5FileObject* self, PyObject* args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_replace.kwlist();
-
-  const char* path = 0;
-  Py_ssize_t pos = -1;
-  PyObject* data = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "snO", kwlist, &path, &pos, &data)) return 0;
-
-  bob::io::base::HDF5Type type;
-  PyObject* converted = 0;
-  int is_array = PyBobIoHDF5File_getObjectType(data, type, &converted);
-  auto converted_ = make_xsafe(converted);
-
-  if (is_array < 0) { ///< error condition, signal
-    const char* filename = "<unknown>";
-    try{ filename = self->f->filename().c_str(); } catch(...){}
-    PyErr_Format(PyExc_TypeError, "error replacing position %" PY_FORMAT_SIZE_T "d of dataset `%s' at HDF5 file `%s': no support for storing objects of type `%s' on HDF5 files", pos, path, filename, Py_TYPE(data)->tp_name);
-    return 0;
-  }
-
-  if (!is_array) { //write as a scalar
-
-    switch(type.type()) {
-      case bob::io::base::s:
-        {
-          auto value = PyBobIo_GetString(data);
-          if (!value) return 0;
-          self->f->replace<std::string>(path, pos, value.get());
-          Py_RETURN_NONE;
-        }
-      case bob::io::base::b:
-        return PyBobIoHDF5File_replaceScalar<bool>(self, path, pos, data);
-      case bob::io::base::i8:
-        return PyBobIoHDF5File_replaceScalar<int8_t>(self, path, pos, data);
-      case bob::io::base::i16:
-        return PyBobIoHDF5File_replaceScalar<int16_t>(self, path, pos, data);
-      case bob::io::base::i32:
-        return PyBobIoHDF5File_replaceScalar<int32_t>(self, path, pos, data);
-      case bob::io::base::i64:
-        return PyBobIoHDF5File_replaceScalar<int64_t>(self, path, pos, data);
-      case bob::io::base::u8:
-        return PyBobIoHDF5File_replaceScalar<uint8_t>(self, path, pos, data);
-      case bob::io::base::u16:
-        return PyBobIoHDF5File_replaceScalar<uint16_t>(self, path, pos, data);
-      case bob::io::base::u32:
-        return PyBobIoHDF5File_replaceScalar<uint32_t>(self, path, pos, data);
-      case bob::io::base::u64:
-        return PyBobIoHDF5File_replaceScalar<uint64_t>(self, path, pos, data);
-      case bob::io::base::f32:
-        return PyBobIoHDF5File_replaceScalar<float>(self, path, pos, data);
-      case bob::io::base::f64:
-        return PyBobIoHDF5File_replaceScalar<double>(self, path, pos, data);
-      case bob::io::base::f128:
-        return PyBobIoHDF5File_replaceScalar<long double>(self, path, pos, data);
-      case bob::io::base::c64:
-        return PyBobIoHDF5File_replaceScalar<std::complex<float> >(self, path, pos, data);
-      case bob::io::base::c128:
-        return PyBobIoHDF5File_replaceScalar<std::complex<double> >(self, path, pos, data);
-      case bob::io::base::c256:
-        return PyBobIoHDF5File_replaceScalar<std::complex<long double> >(self, path, pos, data);
-      default:
-        break;
-    }
-
-  }
-
-  else { //write as array
-
-    switch (is_array) {
-      case 1: //bob.blitz.array
-        self->f->write_buffer(path, pos, type, ((PyBlitzArrayObject*)data)->data);
-        break;
-
-      case 2: //numpy.ndarray
-        self->f->write_buffer(path, pos, type, PyArray_DATA((PyArrayObject*)data));
-        break;
-
-      case 3: //converted numpy.ndarray
-        self->f->write_buffer(path, pos, type, PyArray_DATA((PyArrayObject*)converted));
-        break;
-
-      default:
-        const char* filename = "<unknown>";
-        try{ filename = self->f->filename().c_str(); } catch(...){}
-        PyErr_Format(PyExc_NotImplementedError, "error replacing position %" PY_FORMAT_SIZE_T "d of dataset `%s' at HDF5 file `%s': HDF5 replace function is uncovered for array type %d (DEBUG ME)", pos, path, filename, is_array);
-        return 0;
-    }
-
-  }
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_replace.name()).c_str(), 0)
-}
-
-
-template <typename T>
-static int PyBobIoHDF5File_appendScalar(PyBobIoHDF5FileObject* self,
-    const char* path, PyObject* o) {
-
-  T value = PyBlitzArrayCxx_AsCScalar<T>(o);
-  if (PyErr_Occurred()) return 0;
-  self->f->append(path, value);
-
-  return 1;
-
-}
-
-static int PyBobIoHDF5File_innerAppend(PyBobIoHDF5FileObject* self, const char* path, PyObject* data, Py_ssize_t compression) {
-
-  bob::io::base::HDF5Type type;
-  PyObject* converted = 0;
-  int is_array = PyBobIoHDF5File_getObjectType(data, type, &converted);
-  auto converted_ = make_xsafe(converted);
-
-  if (is_array < 0) { ///< error condition, signal
-    const char* filename = "<unknown>";
-    try{ filename = self->f->filename().c_str(); } catch(...){}
-    PyErr_Format(PyExc_TypeError, "error appending to object `%s' of HDF5 file `%s': no support for storing objects of type `%s' on HDF5 files", path, filename, Py_TYPE(data)->tp_name);
-    return 0;
-  }
-
-  try {
-
-    if (!is_array) { //write as a scalar
-
-      switch(type.type()) {
-        case bob::io::base::s:
-          {
-            auto value = PyBobIo_GetString(data);
-            if (!value) return 0;
-            self->f->append<std::string>(path, value.get());
-            return 1;
-          }
-        case bob::io::base::b:
-          return PyBobIoHDF5File_appendScalar<bool>(self, path, data);
-        case bob::io::base::i8:
-          return PyBobIoHDF5File_appendScalar<int8_t>(self, path, data);
-        case bob::io::base::i16:
-          return PyBobIoHDF5File_appendScalar<int16_t>(self, path, data);
-        case bob::io::base::i32:
-          return PyBobIoHDF5File_appendScalar<int32_t>(self, path, data);
-        case bob::io::base::i64:
-          return PyBobIoHDF5File_appendScalar<int64_t>(self, path, data);
-        case bob::io::base::u8:
-          return PyBobIoHDF5File_appendScalar<uint8_t>(self, path, data);
-        case bob::io::base::u16:
-          return PyBobIoHDF5File_appendScalar<uint16_t>(self, path, data);
-        case bob::io::base::u32:
-          return PyBobIoHDF5File_appendScalar<uint32_t>(self, path, data);
-        case bob::io::base::u64:
-          return PyBobIoHDF5File_appendScalar<uint64_t>(self, path, data);
-        case bob::io::base::f32:
-          return PyBobIoHDF5File_appendScalar<float>(self, path, data);
-        case bob::io::base::f64:
-          return PyBobIoHDF5File_appendScalar<double>(self, path, data);
-        case bob::io::base::f128:
-          return PyBobIoHDF5File_appendScalar<long double>(self, path, data);
-        case bob::io::base::c64:
-          return PyBobIoHDF5File_appendScalar<std::complex<float> >(self, path, data);
-        case bob::io::base::c128:
-          return PyBobIoHDF5File_appendScalar<std::complex<double> >(self, path, data);
-        case bob::io::base::c256:
-          return PyBobIoHDF5File_appendScalar<std::complex<long double> >(self, path, data);
-        default:
-          break;
-      }
-
-    }
-
-    else { //write as array
-
-      switch (is_array) {
-        case 1: //bob.blitz.array
-          if (!self->f->contains(path)) self->f->create(path, type, true, compression);
-          self->f->extend_buffer(path, type, ((PyBlitzArrayObject*)data)->data);
-          break;
-
-        case 2: //numpy.ndarray
-          if (!self->f->contains(path)) self->f->create(path, type, true, compression);
-          self->f->extend_buffer(path, type, PyArray_DATA((PyArrayObject*)data));
-          break;
-
-        case 3: //converted numpy.ndarray
-          if (!self->f->contains(path)) self->f->create(path, type, true, compression);
-          self->f->extend_buffer(path, type, PyArray_DATA((PyArrayObject*)converted));
-          break;
-
-        default:{
-          const char* filename = "<unknown>";
-          try{ filename = self->f->filename().c_str(); } catch(...){}
-          PyErr_Format(PyExc_NotImplementedError, "error appending to object `%s' at HDF5 file `%s': HDF5 replace function is uncovered for array type %d (DEBUG ME)", path, filename, is_array);
-          return 0;
-        }
-      }
-
-    }
-
-  }
-  catch (std::exception& e) {
-    PyErr_SetString(PyExc_RuntimeError, e.what());
-    return 0;
-  }
-  catch (...) {
-    const char* filename = "<unknown>";
-    try{ filename = self->f->filename().c_str(); } catch(...){}
-    PyErr_Format(PyExc_RuntimeError, "cannot append to object `%s' at HDF5 file `%s': unknown exception caught", path, filename);
-    return 0;
-  }
-
-  return 1;
-
-}
-
-
-static auto s_append = bob::extension::FunctionDoc(
-  "append",
-  "Appends a scalar or an array to a dataset",
-  "The object must be compatible with the typing information on the dataset, or an exception will be raised. "
-  "You can also, optionally, set this to an iterable of scalars or arrays. "
-  "This will cause this method to iterate over the elements and add each individually.\n\n"
-  "The ``compression`` parameter is effective when appending arrays. "
-  "Set this to a number betwen 0 (default) and 9 (maximum) to compress the contents of this dataset. "
-  "This setting is only effective if the dataset does not yet exist, otherwise, the previous setting is respected.",
-  true
-)
-.add_prototype("path, data, [compression]")
-.add_parameter("path", "str", "The path to the dataset to append data at; can be an absolute value (starting with a leading ``'/'``) or relative to the current working directory :py:attr:`cwd`")
-.add_parameter("data", ":py:class:`numpy.ndarray` or scalar", "Object to append to the dataset")
-.add_parameter("compression", "int", "A compression value between 0 and 9")
-;
-static PyObject* PyBobIoHDF5File_append(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_append.kwlist();
-
-  char* path = 0;
-  PyObject* data = 0;
-  Py_ssize_t compression = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO|n", kwlist, &path, &data, &compression)) return 0;
-
-  if (compression < 0 || compression > 9) {
-    PyErr_SetString(PyExc_ValueError, "compression should be set to an integer value between and including 0 and 9");
-    return 0;
-  }
-
-  // special case: user passes a tuple or list of arrays or scalars to append
-  if (PyTuple_Check(data) || PyList_Check(data)) {
-    PyObject* iter = PyObject_GetIter(data);
-    if (!iter) return 0;
-    auto iter_ = make_safe(iter);
-    while (PyObject* item = PyIter_Next(iter)) {
-      auto item_ = make_safe(item);
-      int ok = PyBobIoHDF5File_innerAppend(self, path, item, compression);
-      if (!ok) return 0;
-    }
-    Py_RETURN_NONE;
-  }
-
-  int ok = PyBobIoHDF5File_innerAppend(self, path, data, compression);
-  if (!ok) return 0;
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_append.name()).c_str(), 0)
-}
-
-
-template <typename T>
-static PyObject* PyBobIoHDF5File_setScalar(PyBobIoHDF5FileObject* self,
-    const char* path, PyObject* o) {
-
-  T value = PyBlitzArrayCxx_AsCScalar<T>(o);
-  if (PyErr_Occurred()) return 0;
-  self->f->set(path, value);
-
-  Py_RETURN_NONE;
-
-}
-
-
-static auto s_set = bob::extension::FunctionDoc(
-  "set",
-  "Sets the scalar or array at position 0 to the given value",
-  "This method is equivalent to checking if the scalar or array at position 0 exists and then replacing it. "
-  "If the path does not exist, we append the new scalar or array.\n\n"
-  "The ``data`` must be compatible with the typing information on the dataset, or an exception will be raised. "
-  "You can also, optionally, set this to an iterable of scalars or arrays. "
-  "This will cause this method to iterate over the elements and add each individually.\n\n"
-  "The ``compression`` parameter is effective when writing arrays. "
-  "Set this to a number betwen 0 (default) and 9 (maximum) to compress the contents of this dataset. "
-  "This setting is only effective if the dataset does not yet exist, otherwise, the previous setting is respected.\n\n"
-  ".. note:: The functions :py:meth:`set` and :py:meth:`write` are synonyms.",
-  true
-)
-.add_prototype("path, data, [compression]")
-.add_parameter("path", "str", "The path to the dataset to write data to; can be an absolute value (starting with a leading ``'/'``) or relative to the current working directory :py:attr:`cwd`")
-.add_parameter("data", ":py:class:`numpy.ndarray` or scalar", "Object to write to the dataset")
-.add_parameter("compression", "int", "A compression value between 0 and 9")
-;
-auto s_write = s_set.clone("write");
-static PyObject* PyBobIoHDF5File_set(PyBobIoHDF5FileObject* self, PyObject* args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static const char* const_kwlist[] = {"path", "data", "compression", 0};
-  static char** kwlist = const_cast<char**>(const_kwlist);
-
-  char* path = 0;
-  PyObject* data = 0;
-  Py_ssize_t compression = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO|n", kwlist, &path, &data, &compression)) return 0;
-
-  if (compression < 0 || compression > 9) {
-    PyErr_SetString(PyExc_ValueError, "compression should be set to an integer value between and including 0 and 9");
-    return 0;
-  }
-
-  bob::io::base::HDF5Type type;
-  PyObject* converted = 0;
-  int is_array = PyBobIoHDF5File_getObjectType(data, type, &converted);
-  auto converted_ = make_xsafe(converted);
-
-  if (is_array < 0) { ///< error condition, signal
-    const char* filename = "<unknown>";
-    try{ filename = self->f->filename().c_str(); } catch(...){}
-    PyErr_Format(PyExc_TypeError, "error setting object `%s' of HDF5 file `%s': no support for storing objects of type `%s' on HDF5 files", path, filename, Py_TYPE(data)->tp_name);
-    return 0;
-  }
-
-  if (!is_array) { //write as a scalar
-
-    switch(type.type()) {
-      case bob::io::base::s:
-        {
-          auto value = PyBobIo_GetString(data);
-          if (!value) return 0;
-          self->f->set<std::string>(path, value.get());
-          Py_RETURN_NONE;
-        }
-        break;
-      case bob::io::base::b:
-        return PyBobIoHDF5File_setScalar<bool>(self, path, data);
-      case bob::io::base::i8:
-        return PyBobIoHDF5File_setScalar<int8_t>(self, path, data);
-      case bob::io::base::i16:
-        return PyBobIoHDF5File_setScalar<int16_t>(self, path, data);
-      case bob::io::base::i32:
-        return PyBobIoHDF5File_setScalar<int32_t>(self, path, data);
-      case bob::io::base::i64:
-        return PyBobIoHDF5File_setScalar<int64_t>(self, path, data);
-      case bob::io::base::u8:
-        return PyBobIoHDF5File_setScalar<uint8_t>(self, path, data);
-      case bob::io::base::u16:
-        return PyBobIoHDF5File_setScalar<uint16_t>(self, path, data);
-      case bob::io::base::u32:
-        return PyBobIoHDF5File_setScalar<uint32_t>(self, path, data);
-      case bob::io::base::u64:
-        return PyBobIoHDF5File_setScalar<uint64_t>(self, path, data);
-      case bob::io::base::f32:
-        return PyBobIoHDF5File_setScalar<float>(self, path, data);
-      case bob::io::base::f64:
-        return PyBobIoHDF5File_setScalar<double>(self, path, data);
-      case bob::io::base::f128:
-        return PyBobIoHDF5File_setScalar<long double>(self, path, data);
-      case bob::io::base::c64:
-        return PyBobIoHDF5File_setScalar<std::complex<float> >(self, path, data);
-      case bob::io::base::c128:
-        return PyBobIoHDF5File_setScalar<std::complex<double> >(self, path, data);
-      case bob::io::base::c256:
-        return PyBobIoHDF5File_setScalar<std::complex<long double> >(self, path, data);
-      default:
-        break;
-    }
-
-  }
-
-  else { //write as array
-
-    switch (is_array) {
-      case 1: //bob.blitz.array
-        if (!self->f->contains(path)) self->f->create(path, type, false, compression);
-        self->f->write_buffer(path, 0, type, ((PyBlitzArrayObject*)data)->data);
-        break;
-
-      case 2: //numpy.ndarray
-        if (!self->f->contains(path)) self->f->create(path, type, false, compression);
-        self->f->write_buffer(path, 0, type, PyArray_DATA((PyArrayObject*)data));
-        break;
-
-      case 3: //converted numpy.ndarray
-        if (!self->f->contains(path)) self->f->create(path, type, false, compression);
-        self->f->write_buffer(path, 0, type, PyArray_DATA((PyArrayObject*)converted));
-        break;
-
-      default:
-        const char* filename = "<unknown>";
-        try{ filename = self->f->filename().c_str(); } catch(...){}
-        PyErr_Format(PyExc_NotImplementedError, "error setting object `%s' at HDF5 file `%s': HDF5 replace function is uncovered for array type %d (DEBUG ME)", path, filename, is_array);
-        return 0;
-    }
-
-  }
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_set.name()).c_str(), 0)
-}
-
-
-static auto s_copy = bob::extension::FunctionDoc(
-  "copy",
-  "Copies all accessible content to another HDF5 file",
-  "Unlinked contents of this file will not be copied. "
-  "This can be used as a method to trim unwanted content in a file.",
-  true
-)
-.add_prototype("hdf5")
-.add_parameter("hdf5", ":py:class:`HDF5File`", "The HDF5 file (already opened for writing), to copy the contents to")
-;
-static PyObject* PyBobIoHDF5File_copy(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_copy.kwlist();
-
-  PyBobIoHDF5FileObject* other = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&", kwlist, &PyBobIoHDF5File_Converter, &other)) return 0;
-
-  self->f->copy(*other->f);
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_copy.name()).c_str(), 0)
-}
-
-
-template <typename T> static PyObject* PyBobIoHDF5File_readScalarAttribute
-(PyBobIoHDF5FileObject* self, const char* path, const char* name,
- const bob::io::base::HDF5Type& type) {
-  T value;
-  self->f->read_attribute(path, name, type, static_cast<void*>(&value));
-  return PyBlitzArrayCxx_FromCScalar(value);
-}
-
-template <> PyObject* PyBobIoHDF5File_readScalarAttribute<const char*>
-(PyBobIoHDF5FileObject* self, const char* path, const char* name,
- const bob::io::base::HDF5Type& type) {
-  std::string retval;
-  self->f->getAttribute(path, name, retval);
-  return Py_BuildValue("s", retval.c_str());
-}
-
-static PyObject* PyBobIoHDF5File_readAttribute(PyBobIoHDF5FileObject* self,
-    const char* path, const char* name, const bob::io::base::HDF5Type& type) {
-
-  //no error detection: this should be done before reaching this method
-
-  const bob::io::base::HDF5Shape& shape = type.shape();
-
-  if (type.type() == bob::io::base::s || (shape.n() == 1 && shape[0] == 1)) {
-    //read as scalar
-    switch(type.type()) {
-      case bob::io::base::s:
-        return PyBobIoHDF5File_readScalarAttribute<const char*>(self, path, name, type);
-      case bob::io::base::b:
-        return PyBobIoHDF5File_readScalarAttribute<bool>(self, path, name, type);
-      case bob::io::base::i8:
-        return PyBobIoHDF5File_readScalarAttribute<int8_t>(self, path, name, type);
-      case bob::io::base::i16:
-        return PyBobIoHDF5File_readScalarAttribute<int16_t>(self, path, name, type);
-      case bob::io::base::i32:
-        return PyBobIoHDF5File_readScalarAttribute<int32_t>(self, path, name, type);
-      case bob::io::base::i64:
-        return PyBobIoHDF5File_readScalarAttribute<int64_t>(self, path, name, type);
-      case bob::io::base::u8:
-        return PyBobIoHDF5File_readScalarAttribute<uint8_t>(self, path, name, type);
-      case bob::io::base::u16:
-        return PyBobIoHDF5File_readScalarAttribute<uint16_t>(self, path, name, type);
-      case bob::io::base::u32:
-        return PyBobIoHDF5File_readScalarAttribute<uint32_t>(self, path, name, type);
-      case bob::io::base::u64:
-        return PyBobIoHDF5File_readScalarAttribute<uint64_t>(self, path, name, type);
-      case bob::io::base::f32:
-        return PyBobIoHDF5File_readScalarAttribute<float>(self, path, name, type);
-      case bob::io::base::f64:
-        return PyBobIoHDF5File_readScalarAttribute<double>(self, path, name, type);
-      case bob::io::base::f128:
-        return PyBobIoHDF5File_readScalarAttribute<long double>(self, path, name, type);
-      case bob::io::base::c64:
-        return PyBobIoHDF5File_readScalarAttribute<std::complex<float> >(self, path, name, type);
-      case bob::io::base::c128:
-        return PyBobIoHDF5File_readScalarAttribute<std::complex<double> >(self, path, name, type);
-      case bob::io::base::c256:
-        return PyBobIoHDF5File_readScalarAttribute<std::complex<long double> >(self, path, name, type);
-      default:
-        break;
-    }
-  }
-
-  //read as an numpy array
-  int type_num = PyBobIo_H5AsTypenum(type.type());
-  if (type_num == NPY_NOTYPE) return 0; ///< failure
-
-  npy_intp pyshape[NPY_MAXDIMS];
-  for (size_t k=0; k<shape.n(); ++k) pyshape[k] = shape.get()[k];
-
-  PyObject* retval = PyArray_SimpleNew(shape.n(), pyshape, type_num);
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  self->f->read_attribute(path, name, type, PyArray_DATA((PyArrayObject*)retval));
-
-  return Py_BuildValue("O", retval);
-}
-
-
-static auto s_get_attribute = bob::extension::FunctionDoc(
-  "get_attribute",
-  "Retrieve a given attribute from the named resource",
-  "This method returns a single value corresponding to what is stored inside the attribute container for the given resource. "
-  "If you would like to retrieve all attributes at once, use :py:meth:`get_attributes` instead.",
-  true
-)
-.add_prototype("name, [path]", "attribute")
-.add_parameter("name", "str", "The name of the attribute to retrieve; if the attribute is not available, a ``RuntimeError`` is raised")
-.add_parameter("path", "str", "[Default: ``'.'``] The path leading to the resource (dataset or group|directory) you would like to get an attribute from; if the path does not exist, a ``RuntimeError`` is raised")
-.add_return("attribute", ":py:class:`numpy.ndarray` or scalar", "The read attribute")
-;
-static PyObject* PyBobIoHDF5File_getAttribute(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_get_attribute.kwlist();
-
-  const char* name = 0;
-  const char* path = ".";
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|s", kwlist, &name, &path)) return 0;
-
-  bob::io::base::HDF5Type type;
-
-  self->f->getAttributeType(path, name, type);
-
-  if (type.type() == bob::io::base::unsupported) {
-    const char* filename = "<unknown>";
-    try{ filename = self->f->filename().c_str(); } catch(...){}
-    boost::format m("unsupported HDF5 data type detected for attribute `%s' at path `%s' of file `%s' - returning None");
-    m % name % path % filename;
-    PyErr_Warn(PyExc_UserWarning, m.str().c_str());
-    Py_RETURN_NONE;
-  }
-
-  return PyBobIoHDF5File_readAttribute(self, path, name, type);
-BOB_CATCH_MEMBER(exception_message(self, s_get_attribute.name()).c_str(), 0)
-}
-
-
-static auto s_get_attributes = bob::extension::FunctionDoc(
-  "get_attributes",
-  "Reads all attributes of the given path",
-  "Attributes are returned in a dictionary in which each key corresponds to the attribute name and each value corresponds to the value stored inside the HDF5 file. "
-  "To retrieve only a specific attribute, use :py:meth:`get_attribute`.",
-  true
-)
-.add_prototype("[path]", "attributes")
-.add_parameter("path", "str", "[Default: ``'.'``] The path leading to the resource (dataset or group|directory) you would like to get all attributes from; if the path does not exist, a ``RuntimeError`` is raised.")
-.add_return("attributes", "{str:value}", "The attributes organized in dictionary, where ``value`` might be a :py:class:`numpy.ndarray` or a scalar")
-;
-static PyObject* PyBobIoHDF5File_getAttributes(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_get_attributes.kwlist();
-
-  const char* path = ".";
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "|s", kwlist, &path)) return 0;
-
-  std::map<std::string, bob::io::base::HDF5Type> attributes;
-  self->f->listAttributes(path, attributes);
-  PyObject* retval = PyDict_New();
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  for (auto k=attributes.begin(); k!=attributes.end(); ++k) {
-    PyObject* item = 0;
-    if (k->second.type() == bob::io::base::unsupported) {
-      const char* filename = "<unknown>";
-      try{ filename = self->f->filename().c_str(); } catch(...){}
-      boost::format m("unsupported HDF5 data type detected for attribute `%s' at path `%s' of file `%s' - returning None");
-      m % k->first % k->second.str() % filename;
-      PyErr_Warn(PyExc_UserWarning, m.str().c_str());
-      item = Py_BuildValue("");
-    }
-    else item = PyBobIoHDF5File_readAttribute(self, path, k->first.c_str(), k->second);
-
-    if (!item) return 0;
-    auto item_ = make_safe(item);
-
-    if (PyDict_SetItemString(retval, k->first.c_str(), item) != 0) return 0;
-  }
-
-  return Py_BuildValue("O", retval);
-BOB_CATCH_MEMBER(exception_message(self, s_get_attributes.name()).c_str(), 0)
-}
-
-
-template <typename T> PyObject* PyBobIoHDF5File_writeScalarAttribute(PyBobIoHDF5FileObject* self, const char* path, const char* name, const bob::io::base::HDF5Type& type, PyObject* o) {
-  T value = PyBlitzArrayCxx_AsCScalar<T>(o);
-  if (PyErr_Occurred()) return 0;
-
-  self->f->write_attribute(path, name, type, static_cast<void*>(&value));
-
-  Py_RETURN_NONE;
-}
-
-template <> PyObject* PyBobIoHDF5File_writeScalarAttribute<const char*>(PyBobIoHDF5FileObject* self, const char* path, const char* name, const bob::io::base::HDF5Type& type, PyObject* o) {
-  auto value = PyBobIo_GetString(o);
-  if (!value) return 0;
-  self->f->write_attribute(path, name, type, static_cast<const void*>(value.get()));
-  Py_RETURN_NONE;
-}
-
-static PyObject* PyBobIoHDF5File_writeAttribute(PyBobIoHDF5FileObject* self,
-    const char* path, const char* name, const bob::io::base::HDF5Type& type,
-    PyObject* o, int is_array, PyObject* converted) {
-
-  //no error detection: this should be done before reaching this method
-
-  if (!is_array) { //write as a scalar
-    switch(type.type()) {
-      case bob::io::base::s:
-        return PyBobIoHDF5File_writeScalarAttribute<const char*>(self, path, name, type, o);
-      case bob::io::base::b:
-        return PyBobIoHDF5File_writeScalarAttribute<bool>(self, path, name, type, o);
-      case bob::io::base::i8:
-        return PyBobIoHDF5File_writeScalarAttribute<int8_t>(self, path, name, type, o);
-      case bob::io::base::i16:
-        return PyBobIoHDF5File_writeScalarAttribute<int16_t>(self, path, name, type, o);
-      case bob::io::base::i32:
-        return PyBobIoHDF5File_writeScalarAttribute<int32_t>(self, path, name, type, o);
-      case bob::io::base::i64:
-        return PyBobIoHDF5File_writeScalarAttribute<int64_t>(self, path, name, type, o);
-      case bob::io::base::u8:
-        return PyBobIoHDF5File_writeScalarAttribute<uint8_t>(self, path, name, type, o);
-      case bob::io::base::u16:
-        return PyBobIoHDF5File_writeScalarAttribute<uint16_t>(self, path, name, type, o);
-      case bob::io::base::u32:
-        return PyBobIoHDF5File_writeScalarAttribute<uint32_t>(self, path, name, type, o);
-      case bob::io::base::u64:
-        return PyBobIoHDF5File_writeScalarAttribute<uint64_t>(self, path, name, type, o);
-      case bob::io::base::f32:
-        return PyBobIoHDF5File_writeScalarAttribute<float>(self, path, name, type, o);
-      case bob::io::base::f64:
-        return PyBobIoHDF5File_writeScalarAttribute<double>(self, path, name, type, o);
-      case bob::io::base::f128:
-        return PyBobIoHDF5File_writeScalarAttribute<long double>(self, path, name, type, o);
-      case bob::io::base::c64:
-        return PyBobIoHDF5File_writeScalarAttribute<std::complex<float> >(self, path, name, type, o);
-      case bob::io::base::c128:
-        return PyBobIoHDF5File_writeScalarAttribute<std::complex<double> >(self, path, name, type, o);
-      case bob::io::base::c256:
-        return PyBobIoHDF5File_writeScalarAttribute<std::complex<long double> >(self, path, name, type, o);
-      default:
-        break;
-    }
-  }
-
-  else { //write as an numpy array
-
-    switch (is_array) {
-
-      case 1: //bob.blitz.array
-        self->f->write_attribute(path, name, type, ((PyBlitzArrayObject*)o)->data);
-        break;
-
-      case 2: //numpy.ndarray
-        self->f->write_attribute(path, name, type, PyArray_DATA((PyArrayObject*)o));
-        break;
-
-      case 3: //converted numpy.ndarray
-        self->f->write_attribute(path, name, type, PyArray_DATA((PyArrayObject*)converted));
-        break;
-
-      default:{
-        const char* filename = "<unknown>";
-        try{ filename = self->f->filename().c_str(); } catch(...){}
-        PyErr_Format(PyExc_NotImplementedError, "error setting attribute `%s' at resource `%s' of HDF5 file `%s': HDF5 attribute setting function is uncovered for array type %d (DEBUG ME)", name, path, filename, is_array);
-        return 0;
-      }
-    }
-  }
-  Py_RETURN_NONE;
-}
-
-static auto s_set_attribute = bob::extension::FunctionDoc(
-  "set_attribute",
-  "Sets a given attribute at the named resource",
-  "Only simple  scalars (booleans, integers, floats and complex numbers) and arrays of those are supported at the time being. "
-  "You can use :py:mod:`numpy` scalars to set values with arbitrary precision (e.g. :py:class:`numpy.uint8`).\n\n"
-  ".. warning:: Attributes in HDF5 files are supposed to be small containers or simple scalars that provide extra information about the data stored on the main resource (dataset or group|directory). "
-  "Attributes cannot be retrieved in chunks, contrary to data in datasets. "
-  "Currently, **no limitations** for the size of values stored on attributes is imposed.",
-  true
-)
-.add_prototype("name, value, [path]")
-.add_parameter("name", "str", "The name of the attribute to set")
-.add_parameter("value", ":py:class:`numpy.ndarray` or scalar", "A simple scalar to set for the given attribute on the named resources ``path``")
-.add_parameter("path", "str", "[Default: ``'.'``] The path leading to the resource (dataset or group|directory) you would like to set an attribute at")
-;
-static PyObject* PyBobIoHDF5File_setAttribute(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_set_attribute.kwlist();
-
-  const char* name = 0;
-  PyObject* value = 0;
-  const char* path = ".";
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO|s", kwlist, &name, &value, &path)) return 0;
-
-  bob::io::base::HDF5Type type;
-  PyObject* converted = 0;
-  int is_array = PyBobIoHDF5File_getObjectType(value, type, &converted);
-  auto converted_ = make_xsafe(converted);
-
-  if (is_array < 0) { ///< error condition, signal
-    const char* filename = "<unknown>";
-    try{ filename = self->f->filename().c_str(); } catch(...){}
-    PyErr_Format(PyExc_TypeError, "error setting attribute `%s' of resource `%s' at HDF5 file `%s': no support for storing objects of type `%s' on HDF5 files", name, path, filename, Py_TYPE(value)->tp_name);
-    return 0;
-  }
-
-  return PyBobIoHDF5File_writeAttribute(self, path, name, type, value, is_array, converted);
-BOB_CATCH_MEMBER(exception_message(self, s_set_attribute.name()).c_str(), 0)
-}
-
-
-static auto s_set_attributes = bob::extension::FunctionDoc(
-  "set_attributes",
-  "Sets several attribute at the named resource using a dictionary",
-  "Each value in the dictionary should be simple scalars (booleans, integers, floats and complex numbers) or arrays of those are supported at the time being. "
-  "You can use :py:mod:`numpy` scalars to set values with arbitrary precision (e.g. :py:class:`numpy.uint8`).\n\n"
-  ".. warning:: Attributes in HDF5 files are supposed to be small containers or simple scalars that provide extra information about the data stored on the main resource (dataset or group|directory). "
-  "Attributes cannot be retrieved in chunks, contrary to data in datasets. "
-  "Currently, **no limitations** for the size of values stored on attributes is imposed.",
-  true
-)
-.add_prototype("attributes, [path]")
-.add_parameter("attributes", "{str: value}", "A python dictionary containing pairs of strings and values, which can be a py:class:`numpy.ndarray` or a scalar")
-.add_parameter("path", "str", "[Default: ``'.'``] The path leading to the resource (dataset or group|directory) you would like to set attributes at")
-;
-static PyObject* PyBobIoHDF5File_setAttributes(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_set_attributes.kwlist();
-
-  PyObject* attrs = 0;
-  const char* path = ".";
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|s", kwlist, &attrs, &path)) return 0;
-
-  if (!PyDict_Check(attrs)) {
-    PyErr_Format(PyExc_TypeError, "parameter `%s' should be a dictionary where keys are strings and values are the attribute values", kwlist[0]);
-    return 0;
-  }
-
-  PyObject *key, *value;
-  Py_ssize_t pos = 0;
-  while (PyDict_Next(attrs, &pos, &key, &value)) {
-    bob::io::base::HDF5Type type;
-    PyObject* converted = 0;
-
-    auto name = PyBobIo_GetString(key);
-    if (!name) return 0;
-
-    int is_array = PyBobIoHDF5File_getObjectType(value, type, &converted);
-    auto converted_ = make_xsafe(converted);
-
-    if (is_array < 0) { ///< error condition, signal
-      const char* filename = "<unknown>";
-      try{ filename = self->f->filename().c_str(); } catch(...){}
-      PyErr_Format(PyExc_TypeError, "error setting attribute `%s' of resource `%s' at HDF5 file `%s': no support for storing objects of type `%s' on HDF5 files", name.get(), path, filename, Py_TYPE(value)->tp_name);
-      return 0;
-    }
-
-    PyObject* retval = PyBobIoHDF5File_writeAttribute(self, path, name.get(), type, value, is_array, converted);
-    if (!retval) return 0;
-    Py_DECREF(retval);
-
-  }
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_set_attributes.name()).c_str(), 0)
-}
-
-
-static auto s_del_attribute = bob::extension::FunctionDoc(
-  "del_attribute",
-  "Removes a given attribute at the named resource",
-  0,
-  true
-)
-.add_prototype("name, [path]")
-.add_parameter("name", "str", "The name of the attribute to delete; if the attribute is not available, a ``RuntimeError`` is raised")
-.add_parameter("path", "str", "[Default: ``'.'``] The path leading to the resource (dataset or group|directory) you would like to delete an attribute from; if the path does not exist, a ``RuntimeError`` is raised")
-;
-static PyObject* PyBobIoHDF5File_delAttribute(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_del_attribute.kwlist();
-
-  const char* name = 0;
-  const char* path = ".";
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|s", kwlist, &name, &path)) return 0;
-
-  self->f->deleteAttribute(path, name);
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_del_attribute.name()).c_str(), 0)
-}
-
-
-static auto s_del_attributes = bob::extension::FunctionDoc(
-  "del_attributes",
-  "Removes attributes in a given (existing) path",
-  "If the ``attributes`` are not given or set to ``None``, then remove all attributes at the named resource.",
-  true
-)
-.add_prototype("[attributes], [path]")
-.add_parameter("attributes", "[str] or None", "[Default: ``None``] An iterable containing the names of the attributes to be removed, or ``None``")
-.add_parameter("path", "str", "[Default: ``'.'``] The path leading to the resource (dataset or group|directory) you would like to delete attributes from; if the path does not exist, a ``RuntimeError`` is raised")
-;
-static PyObject* PyBobIoHDF5File_delAttributes(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_del_attributes.kwlist();
-
-  PyObject* attrs = 0;
-  const char* path = ".";
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Os", kwlist, &attrs, &path)) return 0;
-
-  if (attrs && !PyIter_Check(attrs)) {
-    PyErr_Format(PyExc_TypeError, "parameter `%s', if set, must be an iterable of strings", kwlist[0]);
-    return 0;
-  }
-
-  if (attrs) {
-    PyObject* iter = PyObject_GetIter(attrs);
-    if (!iter) return 0;
-    auto iter_ = make_safe(iter);
-    while (PyObject* item = PyIter_Next(iter)) {
-      auto item_ = make_safe(item);
-      auto name = PyBobIo_GetString(item);
-      if (!name) return 0;
-      self->f->deleteAttribute(path, name.get());
-    }
-    Py_RETURN_NONE;
-  }
-
-  //else, find the attributes and remove all of them
-  std::map<std::string, bob::io::base::HDF5Type> attributes;
-  self->f->listAttributes(path, attributes);
-  for (auto k=attributes.begin(); k!=attributes.end(); ++k) {
-    self->f->deleteAttribute(path, k->first);
-  }
-
-  Py_RETURN_NONE;
-BOB_CATCH_MEMBER(exception_message(self, s_del_attributes.name()).c_str(), 0)
-}
-
-
-static auto s_has_attribute = bob::extension::FunctionDoc(
-  "has_attribute",
-  "Checks existence of a given attribute at the named resource",
-  0,
-  true
-)
-.add_prototype("name, [path]", "existence")
-.add_parameter("name", "str", "The name of the attribute to check")
-.add_parameter("path", "str", "[Default: ``'.'``] The path leading to the resource (dataset or group|directory) you would like to delete attributes from; if the path does not exist, a ``RuntimeError`` is raised")
-.add_return("existence", "bool", "``True``, if the attribute ``name`` exists, otherwise ``False``")
-;
-static PyObject* PyBobIoHDF5File_hasAttribute(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) {
-BOB_TRY
-  /* Parses input arguments in a single shot */
-  static char** kwlist = s_has_attribute.kwlist();
-
-  const char* name = 0;
-  const char* path = ".";
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|s", kwlist, &name, &path)) return 0;
-
-  if (self->f->hasAttribute(path, name))
-    Py_RETURN_TRUE;
-  Py_RETURN_FALSE;
-
-BOB_CATCH_MEMBER(exception_message(self, s_has_attribute.name()).c_str(), 0)
-}
-
-
-static PyMethodDef PyBobIoHDF5File_methods[] = {
-  {
-    s_close.name(),
-    (PyCFunction)PyBobIoHDF5File_close,
-    METH_VARARGS|METH_KEYWORDS,
-    s_close.doc()
-  },
-  {
-    s_flush.name(),
-    (PyCFunction)PyBobIoHDF5File_flush,
-    METH_VARARGS|METH_KEYWORDS,
-    s_flush.doc()
-  },
-  {
-    s_cd.name(),
-    (PyCFunction)PyBobIoHDF5File_changeDirectory,
-    METH_VARARGS|METH_KEYWORDS,
-    s_cd.doc(),
-  },
-  {
-    s_has_group.name(),
-    (PyCFunction)PyBobIoHDF5File_hasGroup,
-    METH_VARARGS|METH_KEYWORDS,
-    s_has_group.doc(),
-  },
-  {
-    s_create_group.name(),
-    (PyCFunction)PyBobIoHDF5File_createGroup,
-    METH_VARARGS|METH_KEYWORDS,
-    s_create_group.doc(),
-  },
-  {
-    s_has_dataset.name(),
-    (PyCFunction)PyBobIoHDF5File_hasDataset,
-    METH_VARARGS|METH_KEYWORDS,
-    s_has_dataset.doc(),
-  },
-  {
-    s_has_key.name(),
-    (PyCFunction)PyBobIoHDF5File_hasDataset,
-    METH_VARARGS|METH_KEYWORDS,
-    s_has_key.doc(),
-  },
-  {
-    s_describe.name(),
-    (PyCFunction)PyBobIoHDF5File_describe,
-    METH_VARARGS|METH_KEYWORDS,
-    s_describe.doc(),
-  },
-  {
-    s_unlink.name(),
-    (PyCFunction)PyBobIoHDF5File_unlink,
-    METH_VARARGS|METH_KEYWORDS,
-    s_unlink.doc(),
-  },
-  {
-    s_rename.name(),
-    (PyCFunction)PyBobIoHDF5File_rename,
-    METH_VARARGS|METH_KEYWORDS,
-    s_rename.doc(),
-  },
-  {
-    s_paths.name(),
-    (PyCFunction)PyBobIoHDF5File_paths,
-    METH_VARARGS|METH_KEYWORDS,
-    s_paths.doc(),
-  },
-  {
-    s_keys.name(),
-    (PyCFunction)PyBobIoHDF5File_paths,
-    METH_VARARGS|METH_KEYWORDS,
-    s_keys.doc(),
-  },
-  {
-    s_sub_groups.name(),
-    (PyCFunction)PyBobIoHDF5File_subGroups,
-    METH_VARARGS|METH_KEYWORDS,
-    s_sub_groups.doc(),
-  },
-  {
-    s_read.name(),
-    (PyCFunction)PyBobIoHDF5File_read,
-    METH_VARARGS|METH_KEYWORDS,
-    s_read.doc(),
-  },
-  {
-    s_get.name(),
-    (PyCFunction)PyBobIoHDF5File_read,
-    METH_VARARGS|METH_KEYWORDS,
-    s_get.doc(),
-  },
-  {
-    s_lread.name(),
-    (PyCFunction)PyBobIoHDF5File_listRead,
-    METH_VARARGS|METH_KEYWORDS,
-    s_lread.doc(),
-  },
-  {
-    s_replace.name(),
-    (PyCFunction)PyBobIoHDF5File_replace,
-    METH_VARARGS|METH_KEYWORDS,
-    s_replace.doc(),
-  },
-  {
-    s_append.name(),
-    (PyCFunction)PyBobIoHDF5File_append,
-    METH_VARARGS|METH_KEYWORDS,
-    s_append.doc(),
-  },
-  {
-    s_set.name(),
-    (PyCFunction)PyBobIoHDF5File_set,
-    METH_VARARGS|METH_KEYWORDS,
-    s_set.doc(),
-  },
-  {
-    s_write.name(),
-    (PyCFunction)PyBobIoHDF5File_set,
-    METH_VARARGS|METH_KEYWORDS,
-    s_write.doc(),
-  },
-  {
-    s_copy.name(),
-    (PyCFunction)PyBobIoHDF5File_copy,
-    METH_VARARGS|METH_KEYWORDS,
-    s_copy.doc(),
-  },
-  {
-    s_get_attribute.name(),
-    (PyCFunction)PyBobIoHDF5File_getAttribute,
-    METH_VARARGS|METH_KEYWORDS,
-    s_get_attribute.doc(),
-  },
-  {
-    s_get_attributes.name(),
-    (PyCFunction)PyBobIoHDF5File_getAttributes,
-    METH_VARARGS|METH_KEYWORDS,
-    s_get_attributes.doc(),
-  },
-  {
-    s_set_attribute.name(),
-    (PyCFunction)PyBobIoHDF5File_setAttribute,
-    METH_VARARGS|METH_KEYWORDS,
-    s_set_attribute.doc(),
-  },
-  {
-    s_set_attributes.name(),
-    (PyCFunction)PyBobIoHDF5File_setAttributes,
-    METH_VARARGS|METH_KEYWORDS,
-    s_set_attributes.doc(),
-  },
-  {
-    s_del_attribute.name(),
-    (PyCFunction)PyBobIoHDF5File_delAttribute,
-    METH_VARARGS|METH_KEYWORDS,
-    s_del_attribute.doc(),
-  },
-  {
-    s_del_attributes.name(),
-    (PyCFunction)PyBobIoHDF5File_delAttributes,
-    METH_VARARGS|METH_KEYWORDS,
-    s_del_attributes.doc(),
-  },
-  {
-    s_has_attribute.name(),
-    (PyCFunction)PyBobIoHDF5File_hasAttribute,
-    METH_VARARGS|METH_KEYWORDS,
-    s_has_attribute.doc(),
-  },
-  {0}  /* Sentinel */
-};
-
-static auto s_cwd = bob::extension::VariableDoc(
-  "cwd",
-  "str",
-  "The current working directory set on the file"
-);
-static PyObject* PyBobIoHDF5File_cwd(PyBobIoHDF5FileObject* self) {
-BOB_TRY
-  return Py_BuildValue("s", self->f->cwd().c_str());
-BOB_CATCH_MEMBER(exception_message(self, s_cwd.name()).c_str(), 0)
-}
-
-static auto s_filename = bob::extension::VariableDoc(
-  "filename",
-  "str",
-  "The name (and path) of the underlying file on hard disk"
-);
-static PyObject* PyBobIoHDF5File_filename(PyBobIoHDF5FileObject* self) {
-BOB_TRY
-  return Py_BuildValue("s", self->f->filename().c_str());
-BOB_CATCH_MEMBER(exception_message(self, s_filename.name()).c_str(), 0)
-}
-
-
-static auto s_writable = bob::extension::VariableDoc(
-  "writable",
-  "bool",
-  "Has this file been opened in writable mode?"
-);
-static PyObject* PyBobIoHDF5File_writable(PyBobIoHDF5FileObject* self) {
-BOB_TRY
-  return Py_BuildValue("b", self->f->writable());
-BOB_CATCH_MEMBER(exception_message(self, s_writable.name()).c_str(), 0)
-}
-
-static PyGetSetDef PyBobIoHDF5File_getseters[] = {
-    {
-      s_cwd.name(),
-      (getter)PyBobIoHDF5File_cwd,
-      0,
-      s_cwd.doc(),
-      0,
-    },
-    {
-      s_filename.name(),
-      (getter)PyBobIoHDF5File_filename,
-      0,
-      s_filename.doc(),
-      0,
-    },
-    {
-      s_writable.name(),
-      (getter)PyBobIoHDF5File_writable,
-      0,
-      s_writable.doc(),
-      0,
-    },
-    {0}  /* Sentinel */
-};
-
-PyTypeObject PyBobIoHDF5File_Type = {
-    PyVarObject_HEAD_INIT(0, 0)
-    0
-};
-
-bool init_HDF5File(PyObject* module){
-
-  // initialize the HDF5 file
-  PyBobIoHDF5File_Type.tp_name = s_hdf5file.name();
-  PyBobIoHDF5File_Type.tp_basicsize = sizeof(PyBobIoHDF5FileObject);
-  PyBobIoHDF5File_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
-  PyBobIoHDF5File_Type.tp_doc = s_hdf5file.doc();
-
-  // set the functions
-  PyBobIoHDF5File_Type.tp_new = PyBobIoHDF5File_New;
-  PyBobIoHDF5File_Type.tp_init = reinterpret_cast<initproc>(PyBobIoHDF5File_init);
-  PyBobIoHDF5File_Type.tp_dealloc = reinterpret_cast<destructor>(PyBobIoHDF5File_Delete);
-  PyBobIoHDF5File_Type.tp_methods = PyBobIoHDF5File_methods;
-  PyBobIoHDF5File_Type.tp_getset = PyBobIoHDF5File_getseters;
-
-  PyBobIoHDF5File_Type.tp_str = reinterpret_cast<reprfunc>(PyBobIoHDF5File_repr);
-  PyBobIoHDF5File_Type.tp_repr = reinterpret_cast<reprfunc>(PyBobIoHDF5File_repr);
-
-
-  // check that everyting is fine
-  if (PyType_Ready(&PyBobIoHDF5File_Type) < 0)
-    return false;
-
-  // add the type to the module
-  Py_INCREF(&PyBobIoHDF5File_Type);
-  return PyModule_AddObject(module, s_hdf5file.name(), (PyObject*)&PyBobIoHDF5File_Type) >= 0;
-}
diff --git a/bob/io/base/include/bob.io.base/CodecRegistry.h b/bob/io/base/include/bob.io.base/CodecRegistry.h
deleted file mode 100644
index 019bb57..0000000
--- a/bob/io/base/include/bob.io.base/CodecRegistry.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * @date Tue Oct 25 23:25:46 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_CODECREGISTRY_H
-#define BOB_IO_BASE_CODECREGISTRY_H
-
-#include <map>
-#include <string>
-#include <boost/shared_ptr.hpp>
-
-#include <bob.io.base/File.h>
-
-namespace bob { namespace io { namespace base {
-
-  /**
-   * The CodecRegistry holds registered converters for different types of
-   * input files. It manages registration and helps the user in picking the
-   * best codecs for their data. This class is a singleton (single global
-   * variable).
-   */
-  class CodecRegistry {
-
-    public: //static access
-
-      /**
-       * Returns the singleton
-       */
-      static boost::shared_ptr<CodecRegistry> instance();
-
-      static const std::map<std::string, std::string>& getExtensions () {
-        boost::shared_ptr<CodecRegistry> ptr = instance();
-        return ptr->s_extension2description;
-      }
-
-      /**
-       * Sets and unsets double-registration ignore flag
-       */
-      static bool ignoreDoubleRegistration() { return instance()->s_ignore; }
-      static void ignoreDoubleRegistration(bool v) { instance()->s_ignore = v; }
-
-    public: //object access
-
-      void registerExtension(const char* extension, const char* description,
-          file_factory_t factory);
-
-      void deregisterFactory(file_factory_t factory);
-      void deregisterExtension(const char* ext);
-
-      /**
-       * Returns the codec description, if an extension was registered with the
-       * matching input string. Otherwise, returns 0.
-       */
-      const char* getDescription(const char* ext);
-
-      file_factory_t findByExtension(const char* ext);
-      file_factory_t findByFilenameExtension(const char* fn);
-
-      bool isRegistered(const char* ext);
-
-    private:
-
-      CodecRegistry(): s_extension2codec(), s_ignore(false) {}
-
-      // Not implemented
-      CodecRegistry( const CodecRegistry&);
-
-      std::map<std::string, file_factory_t> s_extension2codec;
-      std::map<std::string, std::string> s_extension2description;
-      bool s_ignore; ///< shall I ignore double-registrations?
-
-  };
-
-}}}
-
-#endif /* BOB_IO_BASE_CODECREGISTRY_H */
diff --git a/bob/io/base/include/bob.io.base/File.h b/bob/io/base/include/bob.io.base/File.h
deleted file mode 100644
index e41bccd..0000000
--- a/bob/io/base/include/bob.io.base/File.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * @date Tue Oct 25 23:25:46 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Describes a generic API for reading and writing data to external
- * files.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_FILE_H
-#define BOB_IO_BASE_FILE_H
-
-#include <boost/shared_ptr.hpp>
-#include <bob.io.base/array.h>
-#include <bob.io.base/blitz_array.h>
-
-namespace bob { namespace io { namespace base {
-
-  /**
-   * @brief Files deal with reading and writing multiple (homogeneous) array
-   * data to and from files.
-   */
-  class File {
-
-    public: //abstract API
-
-      virtual ~File();
-
-      /**
-       * The filename this array codec current points to
-       */
-      virtual const char* filename() const =0;
-
-      /**
-       * The typeinfo of data within this file, if it is supposed to be read as
-       * as a sequence of arrays
-       */
-      virtual const bob::io::base::array::typeinfo& type() const =0;
-
-      /**
-       * The typeinfo of data within this file, if it is supposed to be read as
-       * a single array.
-       */
-      virtual const bob::io::base::array::typeinfo& type_all() const =0;
-
-      /**
-       * The number of arrays available in this file, if it is supposed to be
-       * read as a sequence of arrays.
-       */
-      virtual size_t size() const =0;
-
-      /**
-       * Returns the name of the codec, for compatibility reasons.
-       */
-      virtual const char* name() const =0;
-
-      /**
-       * Loads the data of the array into memory. If an index is specified
-       * loads the specific array data from the file, otherwise, loads the data
-       * at position 0.
-       *
-       * This method will check to see if the given array has enough space. If
-       * that is not the case, it will allocate enough space internally by
-       * reseting the input array and putting the data read from the file
-       * inside.
-       */
-      virtual void read(bob::io::base::array::interface& buffer, size_t index) =0;
-
-      /**
-       * Loads all the data available at the file into a single in-memory
-       * array.
-       *
-       * This method will check to see if the given array has enough space. If
-       * that is not the case, it will allocate enough space internally by
-       * reseting the input array and putting the data read from the file
-       * inside.
-       */
-      virtual void read_all(bob::io::base::array::interface& buffer) =0;
-
-      /**
-       * Appends the given buffer into a file. If the file does not exist,
-       * create a new file, else, makes sure that the inserted array respects
-       * the previously set file structure.
-       *
-       * Returns the current position of the newly written array.
-       */
-      virtual size_t append (const bob::io::base::array::interface& buffer) =0;
-
-      /**
-       * Writes the data from the given buffer into the file and act like it is
-       * the only piece of data that will ever be written to such a file. Not
-       * more data appending may happen after a call to this method.
-       */
-      virtual void write (const bob::io::base::array::interface& buffer) =0;
-
-    public: //blitz::Array specific API
-
-      /**
-       * This method returns a copy of the array in the file with the element
-       * type you wish (just have to get the number of dimensions right!).
-       */
-      template <typename T, int N> blitz::Array<T,N> cast(size_t index) {
-        bob::io::base::array::blitz_array tmp(type());
-        read(tmp, index);
-        return tmp.cast<T,N>();
-      }
-
-      /**
-       * This method returns a copy of the array in the file with the element
-       * type you wish (just have to get the number of dimensions right!).
-       *
-       * This variant loads all data available into the file in a single array.
-       */
-      template <typename T, int N> blitz::Array<T,N> cast_all() {
-        bob::io::base::array::blitz_array tmp(type_all());
-        read_all(tmp);
-        return tmp.cast<T,N>();
-      }
-
-      template <typename T, int N> void read(blitz::Array<T,N>& io,
-          size_t index) {
-        bob::io::base::array::blitz_array use_this(io);
-        use_this.set(type());
-        read(use_this, index);
-        io.reference(use_this.get<T,N>());
-      }
-
-      template <typename T, int N> blitz::Array<T,N> read(size_t index) {
-        bob::io::base::array::blitz_array tmp(type());
-        read(tmp, index);
-        return tmp.get<T,N>();
-      }
-
-      template <typename T, int N> void read_all(blitz::Array<T,N>& io) {
-        bob::io::base::array::blitz_array use_this(io);
-        use_this.set(type_all());
-        read_all(use_this);
-        io.reference(use_this.get<T,N>());
-      }
-
-      template <typename T, int N> blitz::Array<T,N> read_all() {
-        bob::io::base::array::blitz_array tmp(type_all());
-        read_all(tmp);
-        return tmp.get<T,N>();
-      }
-
-      template <typename T, int N> size_t append(const blitz::Array<T,N>& in) {
-        bob::io::base::array::blitz_array use_this(in);
-        return append(use_this);
-      }
-
-      template <typename T, int N> void write (const blitz::Array<T,N>& in) {
-        bob::io::base::array::blitz_array use_this(in);
-        write(use_this);
-      }
-
-  };
-
-  /**
-   * @brief This defines the factory method F that can create codecs. Your
-   * task, as a codec developer is to create one of such methods for each of
-   * your codecs and statically register them to the codec registry.
-   *
-   * Here are the meanings of the mode flag that should be respected by your
-   * factory implementation:
-   *
-   * 'r': opens for reading only - no modifications can occur; it is an
-   *      error to open a file that does not exist for read-only operations.
-   * 'w': opens for reading and writing, but truncates the file if it
-   *      exists; it is not an error to open files that do not exist with
-   *      this flag.
-   * 'a': opens for reading and writing - any type of modification can
-   *      occur. If the file does not exist, this flag is effectively like
-   *      'w'.
-   *
-   * Returns a newly allocated File object that can read and write data to the
-   * file using a specific backend.
-   */
-  typedef boost::shared_ptr<File> (*file_factory_t) (const char* filename, char mode);
-
-}}}
-
-#endif /* BOB_IO_BASE_FILE_H */
diff --git a/bob/io/base/include/bob.io.base/HDF5Attribute.h b/bob/io/base/include/bob.io.base/HDF5Attribute.h
deleted file mode 100644
index 3af8a7a..0000000
--- a/bob/io/base/include/bob.io.base/HDF5Attribute.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Fri  2 Mar 08:19:03 2012
- *
- * @brief Simple attribute support for HDF5 files
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_HDF5ATTRIBUTE_H
-#define BOB_IO_BASE_HDF5ATTRIBUTE_H
-
-#include <string>
-#include <map>
-#include <boost/shared_ptr.hpp>
-#include <hdf5.h>
-
-#include <bob.io.base/HDF5Types.h>
-
-namespace bob { namespace io { namespace base { namespace detail { namespace hdf5 {
-
-  /**
-   * Finds out the type of the attribute, if it exists, raises otherwise.
-   */
-  void gettype_attribute (const boost::shared_ptr<hid_t> location,
-      const std::string& name, HDF5Type& type);
-
-  /**
-   * Reads the attribute value, place it in "buffer"
-   */
-  void read_attribute (const boost::shared_ptr<hid_t> location,
-      const std::string& name, const bob::io::base::HDF5Type& dest, void* buffer);
-
-  /**
-   * Writes an attribute value from "buffer"
-   */
-  void write_attribute (boost::shared_ptr<hid_t> location,
-      const std::string& name, const bob::io::base::HDF5Type& dest,
-      const void* buffer);
-
-  /**
-   * Sets a scalar attribute on the given location. Setting an existing
-   * attribute overwrites its value.
-   *
-   * @note Only simple scalars are supported for the time being
-   */
-  template <typename T> void set_attribute(boost::shared_ptr<hid_t> location,
-      const std::string& name, const T& v) {
-    bob::io::base::HDF5Type dest_type(v);
-    write_attribute(location, name, dest_type,
-        reinterpret_cast<const void*>(&v));
-  }
-
-  /**
-   * Reads an attribute from the current group. Raises an error if such
-   * attribute does not exist on the group. To check for existence, use
-   * has_attribute().
-   */
-  template <typename T> T get_attribute(const boost::shared_ptr<hid_t> location,
-      const std::string& name) {
-    T v;
-    bob::io::base::HDF5Type dest_type(v);
-    read_attribute(location, name, dest_type, reinterpret_cast<void*>(&v));
-    return v;
-  }
-
-  /**
-   * Checks if a certain attribute exists in this location.
-   */
-  bool has_attribute(const boost::shared_ptr<hid_t> location,
-      const std::string& name);
-
-  /**
-   * Deletes an attribute from a location.
-   */
-  void delete_attribute(boost::shared_ptr<hid_t> location,
-      const std::string& name);
-
-  /**
-   * Lists all attributes and associated types currently available somewhere
-   */
-  void list_attributes(boost::shared_ptr<hid_t> location,
-    std::map<std::string, bob::io::base::HDF5Type>& attributes);
-
-}}}}}
-
-#endif /* BOB_IO_BASE_HDF5ATTRIBUTE_H */
diff --git a/bob/io/base/include/bob.io.base/HDF5Dataset.h b/bob/io/base/include/bob.io.base/HDF5Dataset.h
deleted file mode 100644
index 5572410..0000000
--- a/bob/io/base/include/bob.io.base/HDF5Dataset.h
+++ /dev/null
@@ -1,536 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed 29 Feb 17:27:45 2012
- *
- * @brief Describes HDF5 datasets
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_HDF5DATASET_H
-#define BOB_IO_BASE_HDF5DATASET_H
-
-#include <vector>
-
-#include <boost/shared_ptr.hpp>
-#include <blitz/array.h>
-#include <hdf5.h>
-
-#include <bob.core/assert.h>
-#include <bob.core/array_copy.h>
-
-#include <bob.io.base/HDF5Attribute.h>
-#include <bob.io.base/HDF5Types.h>
-
-namespace bob { namespace io { namespace base { namespace detail { namespace hdf5 {
-
-  class File;
-  class Group;
-
-  /**
-   * An HDF5 C-style dataset that knows how to close itself.
-   */
-  class Dataset {
-
-    public: //better to protect?
-
-      /**
-       * Creates a new HDF5 dataset by reading its contents from a certain
-       * file.
-       */
-      Dataset(boost::shared_ptr<Group> parent, const std::string& name);
-
-      /**
-       * Creates a new HDF5 dataset from scratch and inserts it in the given
-       * group. If the Dataset already exists on file and the types are
-       * compatible, we attach to that type, otherwise, we raise an exception.
-       *
-       * If a new Dataset is to be created, you can also set if you would like
-       * to have as a list and the compression level. Note these settings have
-       * no effect if the Dataset already exists on file, in which case the
-       * current settings for that dataset are respected. The maximum value for
-       * the gzip compression is 9. The value of zero turns compression off
-       * (the default).
-       *
-       * The effect of setting "list" to false is that the created dataset:
-       *
-       * a) Will not be expandable (chunked)
-       * b) Will contain the exact number of dimensions of the input type.
-       *
-       * When you set "list" to true (the default), datasets are created with
-       * chunking automatically enabled (the chunk size is set to the size of
-       * the given variable) and an extra dimension is inserted to accommodate
-       * list operations.
-       */
-      Dataset(boost::shared_ptr<Group> parent, const std::string& name,
-          const bob::io::base::HDF5Type& type, bool list=true,
-          size_t compression=0);
-
-    public: //api
-
-      /**
-       * Destructor virtualization
-       */
-      virtual ~Dataset();
-
-      /**
-       * Returns the number of objects installed at this dataset from the
-       * perspective of the default compatible type.
-       */
-      size_t size() const;
-
-      /**
-       * Returns the number of objects installed at this dataset from the
-       * perspective of the default compatible type. If the given type is not
-       * compatible, raises a type error.
-       */
-      size_t size(const bob::io::base::HDF5Type& type) const;
-
-      /**
-       * Get parent group
-       */
-      virtual const boost::shared_ptr<Group> parent() const;
-      virtual boost::shared_ptr<Group> parent();
-
-      /**
-       * Filename where I'm sitting
-       */
-      virtual const std::string& filename() const;
-
-      /**
-       * Full path to myself. Constructed each time it is called.
-       */
-      virtual std::string path() const;
-
-      /**
-       * Path with filename. Constructed each time it is called.
-       */
-      virtual std::string url() const;
-
-      /**
-       * Access file
-       */
-      virtual const boost::shared_ptr<File> file() const;
-      virtual boost::shared_ptr<File> file();
-
-      /**
-       * My name
-       */
-      virtual const std::string& name() const {
-        return m_name;
-      }
-
-      /**
-       * Accesses the current location id of this dataset
-       */
-      const boost::shared_ptr<hid_t> location() const {
-        return m_id;
-      }
-      boost::shared_ptr<hid_t> location() {
-        return m_id;
-      }
-
-      /**
-       * DATA READING FUNCTIONALITY
-       */
-
-      /**
-       * Reads data from the file into a scalar. The conditions bellow have to
-       * be respected:
-       *
-       * a. My internal shape is 1D **OR** my internal shape is 2D, but the
-       *    extent of the second dimension is 1.
-       * b. The indexed position exists
-       *
-       * If the internal shape is not like defined above, raises a type error.
-       * If the indexed position does not exist, raises an index error.
-       */
-      template <typename T> void read(size_t index, T& value) {
-        bob::io::base::HDF5Type dest_type(value);
-        read_buffer(index, dest_type, reinterpret_cast<void*>(&value));
-      }
-
-      /**
-       * Reads data from the file into a scalar (allocated internally). The
-       * same conditions as for read(index, value) apply.
-       */
-      template <typename T> T read(size_t index) {
-        T retval;
-        read(index, retval);
-        return retval;
-      }
-
-      /**
-       * Reads data from the file into a scalar. This is equivalent to using
-       * read(0). The same conditions as for read(index=0, value) apply.
-       */
-      template <typename T> T read() {
-        T retval;
-        read(0, retval);
-        return retval;
-      }
-
-      /**
-       * Reads data from the file into a array. The following conditions have
-       * to be respected:
-       *
-       * a. My internal shape is the same as the shape of the given value
-       *    **OR** my internal shape has one more dimension as the given value.
-       *    In this case, the first dimension of the internal shape is
-       *    considered to be an index and the remaining shape values the
-       *    dimension of the value to be read. The given array has to be
-       *    compatible with this re-defined N-1 shape.
-       * b. The indexed position exists
-       *
-       * If the internal shape is not like defined above, raises a type error.
-       * If the index does not exist, raises an index error.
-       *
-       * @param index Which of the arrays to read in the current dataset, by
-       * order
-       * @param value The output array data will be stored inside this
-       * variable. This variable has to be a zero-based C-style contiguous
-       * storage array. If that is not the case, we will raise an exception.
-       */
-      template <typename T, int N>
-        void readArray(size_t index, blitz::Array<T,N>& value) {
-          bob::core::array::assertCZeroBaseContiguous(value);
-          bob::io::base::HDF5Type dest_type(value);
-          read_buffer(index, dest_type, reinterpret_cast<void*>(value.data()));
-        }
-
-      /**
-       * Reads data from the file into an array allocated dynamically. The same
-       * conditions as for readArray(index, value) apply.
-       *
-       * @param index Which of the arrays to read in the current dataset, by
-       * order
-       */
-      template <typename T, int N>
-        blitz::Array<T,N> readArray(size_t index) {
-          for (size_t k=m_descr.size(); k>0; --k) {
-            const bob::io::base::HDF5Shape& S = m_descr[k-1].type.shape();
-            if(S.n() == N) {
-              blitz::TinyVector<int,N> shape;
-              S.set(shape);
-              blitz::Array<T,N> retval(shape);
-              readArray(index, retval);
-              return retval;
-            }
-          }
-          boost::format m("trying to read or write `%s' at `%s' that only accepts `%s'");
-          m % "unknown dynamic shape" % url() % m_descr[0].type.str();
-          throw std::runtime_error(m.str());
-        }
-
-      /**
-       * Reads data from the file into a array. This is equivalent to using
-       * readArray(0, value). The same conditions as for readArray(index=0,
-       * value) apply.
-       *
-       * @param value The output array data will be stored inside this
-       * variable. This variable has to be a zero-based C-style contiguous
-       * storage array. If that is not the case, we will raise an exception.
-       */
-      template <typename T, int N>
-        void readArray(blitz::Array<T,N>& value) {
-          readArray(0, value);
-        }
-
-      /**
-       * Reads data from the file into a array. This is equivalent to using
-       * readArray(0). The same conditions as for readArray(index=0, value)
-       * apply.
-       */
-      template <typename T, int N>
-        blitz::Array<T,N> readArray() {
-          return readArray<T,N>(0);
-        }
-
-      /**
-       * DATA WRITING FUNCTIONALITY
-       */
-
-      /**
-       * Modifies the value of a scalar inside the file. Modifying a value
-       * requires that the expected internal shape for this dataset and the
-       * shape of the given scalar are consistent. To replace a scalar the
-       * conditions bellow have to be respected:
-       *
-       * a. The internal shape is 1D **OR** the internal shape is 2D, but the
-       *    second dimension of the internal shape has is extent == 1.
-       * b. The given indexing position exists
-       *
-       * If the above conditions are not met, an exception is raised.
-       */
-      template <typename T> void replace(size_t index, const T& value) {
-        bob::io::base::HDF5Type dest_type(value);
-        write_buffer(index, dest_type, reinterpret_cast<const void*>(&value));
-      }
-
-      /**
-       * Modifies the value of a scalar inside the file. This is equivalent to
-       * using replace(0, value). The same conditions as for replace(index=0,
-       * value) apply.
-       */
-      template <typename T> void replace(const T& value) {
-        replace(0, value);
-      }
-
-      /**
-       * Inserts a scalar in the current (existing ;-) dataset. This will
-       * trigger writing data to the file. Adding a scalar value requires that
-       * the expected internal shape for this dataset and the shape of the
-       * given scalar are consistent. To add a scalar the conditions
-       * bellow have to be respected:
-       *
-       * a. The internal shape is 1D **OR** the internal shape is 2D, but the
-       *    second dimension of the internal shape has is extent == 1.
-       * b. This dataset is expandible (chunked)
-       *
-       * If the above conditions are not met, an exception is raised.
-       */
-      template <typename T> void add(const T& value) {
-        bob::io::base::HDF5Type dest_type(value);
-        extend_buffer(dest_type, reinterpret_cast<const void*>(&value));
-      }
-
-      /**
-       * Replaces data at the file using a new array. Replacing an existing
-       * array requires shape consistence. The following conditions should be
-       * met:
-       *
-       * a. My internal shape is the same as the shape of the given value
-       *    **OR** my internal shape has one more dimension as the given value.
-       *    In this case, the first dimension of the internal shape is
-       *    considered to be an index and the remaining shape values the
-       *    dimension of the value to be read. The given array has to be
-       *    compatible with this re-defined N-1 shape.
-       * b. The given indexing position exists.
-       *
-       * If the internal shape is not like defined above, raises a type error.
-       * If the indexed position does not exist, raises an index error.
-       *
-       * @param index Which of the arrays to read in the current dataset, by
-       * order
-       * @param value The output array data will be stored inside this
-       * variable. This variable has to be a zero-based C-style contiguous
-       * storage array. If that is not the case, we will raise an exception.
-       */
-      template <typename T, int N>
-        void replaceArray(size_t index, const blitz::Array<T,N>& value) {
-          bob::io::base::HDF5Type dest_type(value);
-          if(!bob::core::array::isCZeroBaseContiguous(value)) {
-            blitz::Array<T,N> tmp = bob::core::array::ccopy(value);
-            write_buffer(index, dest_type, reinterpret_cast<const void*>(tmp.data()));
-          }
-          else {
-            write_buffer(index, dest_type,
-                reinterpret_cast<const void*>(value.data()));
-          }
-        }
-
-      /**
-       * Replaces data at the file using a new array. This is equivalent to
-       * calling replaceArray(0, value). The conditions for
-       * replaceArray(index=0, value) apply.
-       *
-       * @param value The output array data will be stored inside this
-       * variable. This variable has to be a zero-based C-style contiguous
-       * storage array. If that is not the case, we will raise an exception.
-       */
-      template <typename T, int N>
-        void replaceArray(const blitz::Array<T,N>& value) {
-          replaceArray(0, value);
-        }
-
-      /**
-       * Appends a array in a certain subdirectory of the file. If that
-       * subdirectory (or a "group" in HDF5 parlance) does not exist, it is
-       * created. If the dataset does not exist, it is created, otherwise, we
-       * append to it. In this case, the dimensionality of the scalar has to be
-       * compatible with the existing dataset shape (or "dataspace" in HDF5
-       * parlance). If you want to do this, first unlink and than use one of
-       * the add() methods.
-       */
-      template <typename T, int N>
-        void addArray(const blitz::Array<T,N>& value) {
-          bob::io::base::HDF5Type dest_type(value);
-          if(!bob::core::array::isCZeroBaseContiguous(value)) {
-            blitz::Array<T,N> tmp = bob::core::array::ccopy(value);
-            extend_buffer(dest_type, reinterpret_cast<const void*>(tmp.data()));
-          }
-          else {
-            extend_buffer(dest_type, reinterpret_cast<const void*>(value.data()));
-          }
-      }
-
-    private: //apis
-
-      /**
-       * Selects a bit of the file to be affected at the next read or write
-       * operation. This method encapsulate calls to H5Sselect_hyperslab().
-       *
-       * The index is checked for existence as well as the consistence of the
-       * destination type.
-       */
-      std::vector<bob::io::base::HDF5Descriptor>::iterator select (size_t index,
-          const bob::io::base::HDF5Type& dest);
-
-    public: //direct access for other bindings -- don't use these!
-
-      /**
-       * Reads a previously selected area into the given (user) buffer.
-       */
-      void read_buffer (size_t index, const bob::io::base::HDF5Type& dest, void* buffer);
-
-      /**
-       * Writes the contents of a given buffer into the file. The area that the
-       * data will occupy should have been selected beforehand.
-       */
-      void write_buffer (size_t index, const bob::io::base::HDF5Type& dest,
-          const void* buffer);
-
-      /**
-       * Extend the dataset with one extra variable.
-       */
-      void extend_buffer (const bob::io::base::HDF5Type& dest, const void* buffer);
-
-    public: //attribute support
-
-      /**
-       * Gets the current type set for an attribute
-       */
-      void gettype_attribute(const std::string& name,
-          HDF5Type& type) const;
-
-      /**
-       * Sets a scalar attribute on the current group. Setting an existing
-       * attribute overwrites its value.
-       */
-      template <typename T> void set_attribute(const std::string& name,
-          const T& v) {
-        bob::io::base::HDF5Type dest_type(v);
-        write_attribute(name, dest_type, reinterpret_cast<const void*>(&v));
-      }
-
-      /**
-       * Reads an attribute from the current dataset. Raises an error if such
-       * attribute does not exist on the group. To check for existence, use
-       * has_attribute().
-       */
-      template <typename T> T get_attribute(const std::string& name) const {
-        T v;
-        bob::io::base::HDF5Type dest_type(v);
-        read_attribute(name, dest_type, reinterpret_cast<void*>(&v));
-        return v;
-      }
-
-      /**
-       * Checks if a certain attribute exists in this group.
-       */
-      bool has_attribute(const std::string& name) const;
-
-      /**
-       * Deletes an attribute
-       */
-      void delete_attribute(const std::string& name);
-
-      /**
-       * List attributes available on this dataset.
-       */
-      void list_attributes(std::map<std::string, bob::io::base::HDF5Type>& attributes) const;
-
-    public: //array attribute support
-
-      /**
-       * Sets a array attribute on the current group. Setting an existing
-       * attribute overwrites its value. If the attribute exists it is erased
-       * and re-written.
-       */
-      template <typename T, int N> void set_array_attribute(const std::string& name,
-          const blitz::Array<T,N>& v) {
-        bob::io::base::HDF5Type dest_type(v);
-        if(!bob::core::array::isCZeroBaseContiguous(v)) {
-          blitz::Array<T,N> tmp = bob::core::array::ccopy(v);
-          write_attribute(name, dest_type, reinterpret_cast<const void*>(tmp.data()));
-        }
-        else {
-          write_attribute(name, dest_type, reinterpret_cast<const void*>(v.data()));
-        }
-      }
-
-      /**
-       * Reads an attribute from the current dataset. Raises an error if such
-       * attribute does not exist on the group. To check for existence, use
-       * has_attribute().
-       */
-      template <typename T, int N> blitz::Array<T,N> get_array_attribute(const std::string& name) const {
-        blitz::Array<T,N> v;
-        bob::io::base::HDF5Type dest_type(v);
-        read_attribute(name, dest_type, reinterpret_cast<void*>(v.data()));
-        return v;
-      }
-
-      /**
-       * Reads an attribute from the current dataset. Places the data in an
-       * already allocated array.
-       */
-      template <typename T, int N> void get_array_attribute(const std::string& name,
-          blitz::Array<T,N>& v) const {
-        bob::io::base::HDF5Type dest_type(v);
-        read_attribute(name, dest_type, reinterpret_cast<void*>(v.data()));
-      }
-
-    public: //buffer attribute support
-
-      /**
-       * Reads an attribute into a user buffer. It is the user's responsibility
-       * to have a buffer that represents the given type.
-       */
-      void read_attribute (const std::string& name,
-          const bob::io::base::HDF5Type& dest, void* buffer) const;
-
-      /**
-       * Writes the contents of a given buffer into the attribute.
-       */
-      void write_attribute (const std::string& name,
-          const bob::io::base::HDF5Type& dest, const void* buffer);
-
-    private: //not implemented
-
-      /**
-       * Copies the contents of an existing dataset -- not implemented
-       */
-      Dataset(const Dataset& other);
-
-      /**
-       * Assigns the contents of an existing dataset to myself -- not
-       * implemented
-       */
-      Dataset& operator= (const Dataset& other);
-
-    public: //representation
-
-      boost::weak_ptr<Group> m_parent; ///< my parent group
-      std::string m_name; ///< name of this object
-      boost::shared_ptr<hid_t> m_id; ///< the HDF5 Dataset this type points to
-      boost::shared_ptr<hid_t> m_dt; ///< the datatype of this Dataset
-      boost::shared_ptr<hid_t> m_filespace; ///< the "file" space for this set
-      std::vector<bob::io::base::HDF5Descriptor> m_descr; ///< read/write descr.'s
-      boost::shared_ptr<hid_t> m_memspace; ///< read/write space
-
-  };
-
-  /**
-   * std::string specialization
-   */
-  template <> void Dataset::read<std::string>(size_t index, std::string& value);
-  template <> void Dataset::replace<std::string>(size_t index, const std::string& value);
-  template <> void Dataset::add<std::string>(const std::string& value);
-  template <> void Dataset::set_attribute<std::string>(const std::string& name, const std::string& v);
-  template <> std::string Dataset::get_attribute(const std::string& name) const;
-
-}}}}}
-
-
-#endif /* BOB_IO_BASE_HDF5DATASET_H */
diff --git a/bob/io/base/include/bob.io.base/HDF5File.h b/bob/io/base/include/bob.io.base/HDF5File.h
deleted file mode 100644
index 31c6594..0000000
--- a/bob/io/base/include/bob.io.base/HDF5File.h
+++ /dev/null
@@ -1,558 +0,0 @@
-/**
- * @date Wed Jun 22 17:50:08 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief bob support for HDF5 files. HDF5 is a open standard for
- * self-describing data files. You can get more information in this webpage:
- * http://www.hdfgroup.org/HDF5
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_HDF5FILE_H
-#define BOB_IO_BASE_HDF5FILE_H
-
-#include <boost/format.hpp>
-
-#include <bob.io.base/HDF5Utils.h>
-
-namespace bob { namespace io { namespace base {
-
-  /**
-   * This is the main type for interfacing bob with HDF5. It allows the user
-   * to create, delete and modify data objects using a very-level API. The
-   * total functionality provided by this API is, of course, much smaller than
-   * what is provided if you use the HDF5 C-APIs directly, but is much simpler
-   * as well.
-   */
-  class HDF5File {
-
-    public:
-
-      /**
-       * This enumeration defines the different values with which you can open
-       * the files with
-       */
-      typedef enum mode_t {
-        in = 0, //H5F_ACC_RDONLY    < can only read file
-        inout = 1, //H5F_ACC_RDWR   < open file for reading and writing
-        trunc = 2, //H5F_ACC_TRUNC  < if file exists, truncate it and open
-        excl = 4 //H5F_ACC_EXCL    < if file exists, raise, otherwise == inout
-      } mode_t;
-
-    public: //api
-
-      /**
-       * Constructor, starts a new HDF5File object giving it a file name and an
-       * action: excl/trunc/in/inout
-       */
-      HDF5File (const std::string& filename, mode_t mode);
-
-      /**
-       * Constructor, starts a new HDF5File object giving it a file name and an
-       * action: 'r' (read-only), 'a' (read/write/append), 'w' (read/write/truncate) or 'x' (read/write/exclusive)
-       */
-      HDF5File (const std::string& filename, const char mode='r');
-
-      /**
-       * Destructor virtualization
-       */
-      virtual ~HDF5File();
-
-      /**
-       * Flushes the current content of the file to disk.
-       */
-      void flush() {m_file->flush();}
-
-      /**
-       * Closes the file after writing its content to disk
-       */
-      void close();
-
-      /**
-       * Changes the current prefix path. When this object is started, it
-       * points to the root of the file. If you set this to a different
-       * value, it will be used as a prefix to any subsequent operation on
-       * relative paths until you reset it.
-       *
-       * @param path If path starts with '/', it is treated as an absolute
-       * path. '..' and '.' are supported. This object should be a std::string.
-       * If the value is relative, it is added to the current path.
-       *
-       * @note All operations taking a relative path, following a cd(), will be
-       * considered relative to the value returned by cwd().
-       */
-      void cd(const std::string& path);
-
-      /**
-       * Tells if a certain directory exists in a file.
-       */
-      bool hasGroup(const std::string& path);
-
-      /**
-       * Creates a directory within the file. It is an error to recreate a path
-       * that already exists. You can check this with hasGroup()
-       */
-      void createGroup(const std::string& path);
-
-      /**
-       * Returns the name of the file currently opened
-       */
-      const std::string filename() const {check_open(); return m_file->filename(); }
-
-      /**
-       * Checks if the file is open for writing
-       */
-      bool writable() const {check_open(); return m_file->writable();}
-
-      /**
-       * Returns the current working path, fully resolved. This is
-       * re-calculated every time you call this method.
-       */
-      std::string cwd() const;
-
-      /**
-       * Tells if we have a variable with the given name inside the HDF5 file.
-       * If the file path given is a relative file path, it is taken w.r.t. the
-       * current working directory, as returned by cwd().
-       */
-      bool contains(const std::string& path) const;
-
-      /**
-       * Describe a certain dataset path. If the file path is a relative one,
-       * it is taken w.r.t. the current working directory, as returned by
-       * cwd().
-       */
-      const std::vector<HDF5Descriptor>& describe (const std::string& path) const;
-
-      /**
-       * Unlinks a particular dataset from the file. Note that this will
-       * not erase the data on the current file as that functionality is not
-       * provided by HDF5. To actually reclaim the space occupied by the
-       * unlinked structure, you must re-save this file to another file. The
-       * new file will not contain the data of any dangling datasets (datasets
-       * w/o names or links). Relative paths are allowed.
-       */
-      void unlink (const std::string& path);
-
-      /**
-       * Renames an existing dataset
-       */
-      void rename (const std::string& from, const std::string& to);
-
-      /**
-       * Accesses all existing paths in one shot. Input has to be a std
-       * container with T = std::string and accepting push_back()
-       */
-      template <typename T> void paths (T& container, const bool relative = false) const {
-        m_cwd->dataset_paths(container);
-        check_open();
-        if (relative){
-          const std::string d = cwd();
-          const int len = d.length()+1;
-          for (typename T::iterator it = container.begin(); it != container.end(); ++it){
-            // assert that the string contains the current path
-            assert(it->find(d) == 0);
-            // subtract current path
-            *it = it->substr(len);
-          }
-        }
-      }
-
-      /**
-       * Accesses all existing paths in one shot. Input has to be a std
-       * container with T = std::string and accepting push_back()
-       */
-      template <typename T> void sub_groups (T& container, bool relative = false, bool recursive = true) const {
-        check_open();
-        m_cwd->subgroup_paths(container, recursive);
-        if (!relative){
-          const std::string d = cwd() + "/";
-          for (typename T::iterator it = container.begin(); it != container.end(); ++it){
-            // add current path
-            *it = d + *it;
-          }
-        }
-      }
-
-      /**
-       * Copies the contents of the other file to this file. This is a blind
-       * operation, so we try to copy everything from the given file to the
-       * current one. It is the user responsibility to make sure the "path"
-       * slots in the other file are not already taken. If that is detected, an
-       * exception will be raised.
-       *
-       * This operation will be conducted w.r.t. the currently set prefix path
-       * (verifiable using cwd()).
-       */
-      void copy (HDF5File& other);
-
-      /**
-       * Reads data from the file into a scalar. Raises an exception if the
-       * type is incompatible. Relative paths are accepted.
-       */
-      template <typename T>
-        void read(const std::string& path, size_t pos, T& value) {
-          check_open();
-          (*m_cwd)[path]->read(pos, value);
-        }
-
-      /**
-       * Reads data from the file into a scalar. Returns by copy. Raises if the
-       * type T is incompatible. Relative paths are accepted.
-       */
-      template <typename T> T read(const std::string& path, size_t pos) {
-        check_open();
-        return (*m_cwd)[path]->read<T>(pos);
-      }
-
-      /**
-       * Reads data from the file into a scalar. Raises an exception if the
-       * type is incompatible. Relative paths are accepted. Calling this method
-       * is equivalent to calling read(path, 0). Returns by copy.
-       */
-      template <typename T> T read(const std::string& path) {
-        return read<T>(path, 0);
-      }
-
-      /**
-       * Reads data from the file into a array. Raises an exception if the type
-       * is incompatible. Relative paths are accepted.
-       */
-      template <typename T, int N> void readArray(const std::string& path,
-          size_t pos, blitz::Array<T,N>& value) {
-        check_open();
-        (*m_cwd)[path]->readArray(pos, value);
-      }
-
-      /**
-       * Reads data from the file into a array. Raises an exception if the type
-       * is incompatible. Relative paths are accepted. Destination array is
-       * allocated internally and returned by value.
-       */
-      template <typename T, int N> blitz::Array<T,N> readArray
-        (const std::string& path, size_t pos) {
-        check_open();
-        return (*m_cwd)[path]->readArray<T,N>(pos);
-      }
-
-      /**
-       * Reads data from the file into a array. Raises an exception if the type
-       * is incompatible. Relative paths are accepted. Calling this method is
-       * equivalent to calling readArray(path, 0, value).
-       */
-      template <typename T, int N> void readArray(const std::string& path,
-          blitz::Array<T,N>& value) {
-        readArray(path, 0, value);
-      }
-
-      /**
-       * Reads data from the file into a array. Raises an exception if the type
-       * is incompatible. Relative paths are accepted. Calling this method is
-       * equivalent to calling readArray(path, 0). Destination array is
-       * allocated internally.
-       */
-      template <typename T, int N> blitz::Array<T,N> readArray
-        (const std::string& path) {
-          return readArray<T,N>(path, 0);
-      }
-
-      /**
-       * Modifies the value of a scalar inside the file. Relative paths are
-       * accepted.
-       */
-      template <typename T> void replace(const std::string& path, size_t pos,
-          const T& value) {
-        check_open();
-        if (!m_file->writable()) {
-          boost::format m("cannot replace value at dataset '%s' at path '%s' of file '%s' because it is not writeable");
-          m % path % m_cwd->path() % m_file->filename();
-          throw std::runtime_error(m.str());
-        }
-        (*m_cwd)[path]->replace(pos, value);
-      }
-
-      /**
-       * Modifies the value of a scalar inside the file. Relative paths are
-       * accepted. Calling this method is equivalent to calling replace(path,
-       * 0, value).
-       */
-      template <typename T> void replace(const std::string& path,
-          const T& value) {
-        replace(path, 0, value);
-      }
-
-      /**
-       * Modifies the value of a array inside the file. Relative paths are
-       * accepted.
-       */
-      template <typename T> void replaceArray(const std::string& path,
-          size_t pos, const T& value) {
-        check_open();
-        if (!m_file->writable()) {
-          boost::format m("cannot replace array at dataset '%s' at path '%s' of file '%s' because it is not writeable");
-          m % path % m_cwd->path() % m_file->filename();
-          throw std::runtime_error(m.str());
-        }
-        (*m_cwd)[path]->replaceArray(pos, value);
-      }
-
-      /**
-       * Modifies the value of a array inside the file. Relative paths are
-       * accepted. Calling this method is equivalent to calling
-       * replaceArray(path, 0, value).
-       */
-      template <typename T> void replaceArray(const std::string& path,
-          const T& value) {
-        replaceArray(path, 0, value);
-      }
-
-      /**
-       * Appends a scalar in a dataset. If the dataset does not yet exist, one
-       * is created with the type characteristics. Relative paths are accepted.
-       */
-      template <typename T> void append(const std::string& path,
-          const T& value) {
-        check_open();
-        if (!m_file->writable()) {
-          boost::format m("cannot append value to dataset '%s' at path '%s' of file '%s' because it is not writeable");
-          m % path % m_cwd->path() % m_file->filename();
-          throw std::runtime_error(m.str());
-        }
-        if (!contains(path)) m_cwd->create_dataset(path, bob::io::base::HDF5Type(value), true, 0);
-        (*m_cwd)[path]->add(value);
-      }
-
-      /**
-       * Appends a array in a dataset. If the dataset does not yet exist, one
-       * is created with the type characteristics. Relative paths are accepted.
-       *
-       * If a new Dataset is to be created, you can also set the compression
-       * level. Note this setting has no effect if the Dataset already exists
-       * on file, in which case the current setting for that dataset is
-       * respected. The maximum value for the gzip compression is 9. The value
-       * of zero turns compression off (the default).
-       */
-      template <typename T> void appendArray(const std::string& path,
-          const T& value, size_t compression=0) {
-        check_open();
-        if (!m_file->writable()) {
-          boost::format m("cannot append array to dataset '%s' at path '%s' of file '%s' because it is not writeable");
-          m % path % m_cwd->path() % m_file->filename();
-          throw std::runtime_error(m.str());
-        }
-        if (!contains(path)) m_cwd->create_dataset(path, bob::io::base::HDF5Type(value), true, compression);
-        (*m_cwd)[path]->addArray(value);
-      }
-
-      /**
-       * Sets the scalar at position 0 to the given value. This method is
-       * equivalent to checking if the scalar at position 0 exists and then
-       * replacing it. If the path does not exist, we append the new scalar.
-       */
-      template <typename T> void set(const std::string& path, const T& value) {
-        check_open();
-        if (!m_file->writable()) {
-          boost::format m("cannot set value at dataset '%s' at path '%s' of file '%s' because it is not writeable");
-          m % path % m_cwd->path() % m_file->filename();
-          throw std::runtime_error(m.str());
-        }
-        if (!contains(path)) m_cwd->create_dataset(path, bob::io::base::HDF5Type(value), false, 0);
-        (*m_cwd)[path]->replace(0, value);
-      }
-
-      /**
-       * Sets the array at position 0 to the given value. This method is
-       * equivalent to checking if the array at position 0 exists and then
-       * replacing it. If the path does not exist, we append the new array.
-       *
-       * If a new Dataset is to be created, you can also set the compression
-       * level. Note this setting has no effect if the Dataset already exists
-       * on file, in which case the current setting for that dataset is
-       * respected. The maximum value for the gzip compression is 9. The value
-       * of zero turns compression off (the default).
-       */
-      template <typename T> void setArray(const std::string& path,
-          const T& value, size_t compression=0) {
-        check_open();
-        if (!m_file->writable()) {
-          boost::format m("cannot set array at dataset '%s' at path '%s' of file '%s' because it is not writeable");
-          m % path % m_cwd->path() % m_file->filename();
-          throw std::runtime_error(m.str());
-        }
-        if (!contains(path)) m_cwd->create_dataset(path, bob::io::base::HDF5Type(value), false, compression);
-        (*m_cwd)[path]->replaceArray(0, value);
-      }
-
-    public: //api shortcuts to deal with buffers -- avoid these at all costs!
-
-      /**
-       * creates a new dataset. If the dataset already exists, checks if the
-       * existing data is compatible with the required type.
-       */
-      void create (const std::string& path, const HDF5Type& dest, bool list,
-          size_t compression);
-
-      /**
-       * Reads data from the file into a buffer. The given buffer contains
-       * sufficient space to hold the type described in "dest". Raises an
-       * exception if the type is incompatible with the expected data in the
-       * file. Relative paths are accepted.
-       */
-      void read_buffer (const std::string& path, size_t pos,
-          const HDF5Type& type, void* buffer) const;
-
-      /**
-       * writes the contents of a given buffer into the file. the area that the
-       * data will occupy should have been selected beforehand.
-       */
-      void write_buffer (const std::string& path, size_t pos,
-          const HDF5Type& type, const void* buffer);
-
-      /**
-       * extend the dataset with one extra variable.
-       */
-      void extend_buffer (const std::string& path,
-          const HDF5Type& type, const void* buffer);
-
-      /**
-       * Copy construct an already opened HDF5File; just creates a shallow copy
-       * of the file
-       */
-      HDF5File (const HDF5File& other);
-
-      /**
-       * Drop the current settings and load new ones from the other file.
-       */
-      HDF5File& operator= (const HDF5File& other);
-
-    public: // attribute handling
-
-      /**
-       * Tells if there is an attribute with a given name on the given path,
-       * relative to the current location, possibly.
-       */
-      bool hasAttribute(const std::string& path, const std::string& name) const;
-
-      /**
-       * Reads data from an attribute into a scalar. If the attribute does not
-       * exist, raise an exception. Raises a TypeError if the types are not
-       * compatible.
-       */
-      template <typename T>
-        void getAttribute(const std::string& path, const std::string& name,
-            T& value) const {
-          check_open();
-          if (m_cwd->has_dataset(path)) {
-            value = (*m_cwd)[path]->get_attribute<T>(name);
-          }
-          else if (m_cwd->has_group(path)) {
-            value = m_cwd->cd(path)->get_attribute<T>(name);
-          }
-          else {
-            boost::format m("cannot read attribute '%s' at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-            m % name % path % m_file->filename() % m_cwd->path();
-            throw std::runtime_error(m.str());
-          }
-        }
-
-      /**
-       * Reads data from an attribute into an array. If the attribute does not
-       * exist, raise an exception. Raises a type error if the types are not
-       * compatible.
-       */
-      template <typename T, int N>
-        void getArrayAttribute(const std::string& path,
-            const std::string& name, blitz::Array<T,N>& value) const {
-          check_open();
-          if (m_cwd->has_dataset(path)) {
-            value = (*m_cwd)[path]->get_array_attribute<T,N>(name);
-          }
-          else if (m_cwd->has_group(path)) {
-            value = m_cwd->cd(path)->get_array_attribute<T,N>(name);
-          }
-          else {
-            boost::format m("cannot read (array) attribute '%s' at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-            m % name % path % m_file->filename() % m_cwd->path();
-            throw std::runtime_error(m.str());
-          }
-        }
-
-      /**
-       * Writes a scalar as an attribute to a path in this file.
-       */
-      template <typename T>
-        void setAttribute(const std::string& path, const std::string& name,
-            const T value) {
-          check_open();
-          if (m_cwd->has_dataset(path)) {
-            (*m_cwd)[path]->set_attribute(name, value);
-          }
-          else if (m_cwd->has_group(path)) {
-            m_cwd->cd(path)->set_attribute(name, value);
-          }
-          else {
-            boost::format m("cannot write attribute '%s' at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-            m % name % path % m_file->filename() % m_cwd->path();
-            throw std::runtime_error(m.str());
-          }
-        }
-
-      /**
-       * Writes an array as an attribute to a path in this file.
-       */
-      template <typename T, int N>
-        void setArrayAttribute(const std::string& path,
-            const std::string& name, const blitz::Array<T,N>& value) {
-          check_open();
-          if (m_cwd->has_dataset(path)) {
-            (*m_cwd)[path]->set_array_attribute(name, value);
-          }
-          else if (m_cwd->has_group(path)) {
-            m_cwd->cd(path)->set_array_attribute(name, value);
-          }
-          else {
-            boost::format m("cannot write (array) attribute '%s' at path/dataset '%s' of file '%s' (cwd: '%s') because this path/dataset does not currently exist");
-            m % name % path % m_file->filename() % m_cwd->path();
-            throw std::runtime_error(m.str());
-          }
-        }
-
-      /**
-       * Gets the type information of an attribute
-       */
-      void getAttributeType(const std::string& path,
-          const std::string& name, bob::io::base::HDF5Type& type) const;
-
-      /**
-       * Deletes a given attribute
-       */
-      void deleteAttribute(const std::string& path,
-          const std::string& name);
-
-      /**
-       * List attributes available on a certain object.
-       */
-      void listAttributes(const std::string& path,
-          std::map<std::string, bob::io::base::HDF5Type>& attributes) const;
-
-    public: //raw accessors to attributes
-
-      void read_attribute(const std::string& path, const std::string& name,
-          const bob::io::base::HDF5Type& type, void* buffer) const;
-
-      void write_attribute(const std::string& path, const std::string& name,
-          const bob::io::base::HDF5Type& type, const void* buffer);
-
-    private: //representation
-
-      void check_open() const;
-
-      boost::shared_ptr<detail::hdf5::File> m_file; ///< the file itself
-      boost::shared_ptr<detail::hdf5::Group> m_cwd; ///< current working dir
-
-  };
-
-}}}
-
-#endif /* BOB_IO_BASE_HDF5FILE_H */
diff --git a/bob/io/base/include/bob.io.base/HDF5Group.h b/bob/io/base/include/bob.io.base/HDF5Group.h
deleted file mode 100644
index 9dcd7a6..0000000
--- a/bob/io/base/include/bob.io.base/HDF5Group.h
+++ /dev/null
@@ -1,468 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed 29 Feb 17:24:10 2012
- *
- * @brief Describes HDF5 groups.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_HDF5GROUP_H
-#define BOB_IO_BASE_HDF5GROUP_H
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <hdf5.h>
-
-#include <bob.io.base/HDF5Types.h>
-#include <bob.io.base/HDF5Dataset.h>
-#include <bob.io.base/HDF5Attribute.h>
-
-namespace bob { namespace io { namespace base { namespace detail { namespace hdf5 {
-
-  class File;
-
-  /**
-   * A group represents a path inside the HDF5 file. It can contain Datasets or
-   * other Groups.
-   */
-  class Group: public boost::enable_shared_from_this<Group> {
-
-    public: //better to protect?
-
-      /**
-       * Creates a new group in a given parent.
-       */
-      Group(boost::shared_ptr<Group> parent, const std::string& name);
-
-      /**
-       * Binds to an existing group in a parent, reads all the group contents
-       * recursively. Note that the last parameter is there only to
-       * differentiate from the above constructor. It is ignored.
-       */
-      Group(boost::shared_ptr<Group> parent,  const std::string& name,
-          bool open);
-
-      /**
-       * Constructor used by the root group, just open the root group
-       */
-      Group(boost::shared_ptr<File> parent);
-
-      /**
-       * Recursively open sub-groups and datasets. This cannot be done at the
-       * constructor because of a enable_shared_from_this<> restriction that
-       * results in a bad weak pointer exception being raised.
-       */
-      void open_recursively();
-
-    public: //api
-
-      /**
-       * D'tor - presently, does nothing
-       */
-      virtual ~Group();
-
-      /**
-       * Get parent group
-       */
-      virtual const boost::shared_ptr<Group> parent() const;
-      virtual boost::shared_ptr<Group> parent();
-
-      /**
-       * Filename where I'm sitting
-       */
-      virtual const std::string& filename() const;
-
-      /**
-       * Full path to myself. Constructed each time it is called.
-       */
-      virtual std::string path() const;
-
-      /**
-       * Access file
-       */
-      virtual const boost::shared_ptr<File> file() const;
-      virtual boost::shared_ptr<File> file();
-
-      /**
-       * My name
-       */
-      virtual const std::string& name() const {
-        return m_name;
-      }
-
-      /**
-       * Deletes all children nodes and properties in this group.
-       *
-       * Note that removing data already written in a file will only be
-       * effective in terms of space saving when you actually re-write that
-       * file. This instruction just unlinks all data from this group and makes
-       * them inaccessible to any further read operation.
-       */
-      virtual void reset();
-
-      /**
-       * Accesses the current location id of this group
-       */
-      const boost::shared_ptr<hid_t> location() const {
-        return m_id;
-      }
-
-      boost::shared_ptr<hid_t> location() {
-        return m_id;
-      }
-
-      /**
-       * Path with filename. Constructed each time it is called.
-       */
-      virtual std::string url() const;
-
-      /**
-       * move up-down on the group hierarchy
-       */
-      virtual boost::shared_ptr<Group> cd(const std::string& path);
-      virtual const boost::shared_ptr<Group> cd(const std::string& path) const;
-
-      /**
-       * Get a mapping of all child groups
-       */
-      virtual const std::map<std::string, boost::shared_ptr<Group> >& groups()
-        const {
-        return m_groups;
-      }
-
-      /**
-       * Create a new subgroup with a given name.
-       */
-      virtual boost::shared_ptr<Group> create_group(const std::string& name);
-
-      /**
-       * Deletes an existing subgroup with a given name. If a relative name is
-       * given, it is interpreted w.r.t. to this group.
-       *
-       * Note that removing data already written in a file will only be
-       * effective in terms of space saving when you actually re-write that
-       * file. This instruction just unlinks all data from this group and makes
-       * them inaccessible to any further read operation.
-       */
-      virtual void remove_group(const std::string& path);
-
-      /**
-       * Rename an existing group under me.
-       */
-      virtual void rename_group(const std::string& from, const std::string& to);
-
-      /**
-       * Copies all data from an existing group into myself, creating a new
-       * subgroup, by default, with the same name as the other group. If a
-       * relative name is given, it is interpreted w.r.t. to this group.
-       *
-       * If an empty string is given as "dir", copies the other group name.
-       */
-      virtual void copy_group(const boost::shared_ptr<Group> other, const
-          std::string& path="");
-
-      /**
-       * Says if a group with a certain path exists in this group.
-       */
-      virtual bool has_group(const std::string& path) const;
-
-      /**
-       * Get all datasets attached to this group
-       */
-      virtual const std::map<std::string, boost::shared_ptr<Dataset> >&
-        datasets() const {
-          return m_datasets;
-        }
-
-      /**
-       * Creates a new HDF5 dataset from scratch and inserts it in this group.
-       * If the Dataset already exists on file and the types are compatible, we
-       * attach to that type, otherwise, we raise an exception.
-       *
-       * You can set if you would like to have the dataset created as a list
-       * and the compression level.
-       *
-       * The effect of setting "list" to false is that the created dataset:
-       *
-       * a) Will not be expandible (chunked) b) Will contain the exact number
-       * of dimensions of the input type.
-       *
-       * When you set "list" to true (the default), datasets are created with
-       * chunking automatically enabled (the chunk size is set to the size of
-       * the given variable) and an extra dimension is inserted to accomodate
-       * list operations.
-       */
-      virtual boost::shared_ptr<Dataset> create_dataset
-        (const std::string& path, const bob::io::base::HDF5Type& type, bool list=true,
-         size_t compression=0);
-
-      /**
-       * Deletes a dataset in this group
-       *
-       * Note that removing data already written in a file will only be
-       * effective in terms of space saving when you actually re-write that
-       * file. This instruction just unlinks all data from this group and makes
-       * them inaccessible to any further read operation.
-       */
-      virtual void remove_dataset(const std::string& path);
-
-      /**
-       * Rename an existing dataset under me.
-       */
-      virtual void rename_dataset(const std::string& from,
-          const std::string& to);
-
-      /**
-       * Copies the contents of the given dataset into this. By default, use
-       * the same name.
-       */
-      virtual void copy_dataset(const boost::shared_ptr<Dataset> other,
-          const std::string& path="");
-
-      /**
-       * Says if a dataset with a certain name exists in the current file.
-       */
-      virtual bool has_dataset(const std::string& path) const;
-
-      /**
-       * Accesses a certain dataset from this group
-       */
-      boost::shared_ptr<Dataset> operator[] (const std::string& path);
-      const boost::shared_ptr<Dataset> operator[] (const std::string& path) const;
-
-      /**
-       * Accesses all existing paths in one shot. Input has to be a std
-       * container with T = std::string and accepting push_back()
-       */
-      template <typename T> void dataset_paths (T& container) const {
-        for (std::map<std::string, boost::shared_ptr<io::base::detail::hdf5::Dataset> >::const_iterator it=m_datasets.begin(); it != m_datasets.end(); ++it) container.push_back(it->second->path());
-        for (std::map<std::string, boost::shared_ptr<io::base::detail::hdf5::Group> >::const_iterator it=m_groups.begin(); it != m_groups.end(); ++it) it->second->dataset_paths(container);
-      }
-
-      /**
-       * Accesses all existing sub-groups in one shot. Input has to be a std
-       * container with T = std::string and accepting push_back()
-       */
-      template <typename T> void subgroup_paths (T& container, bool recursive = true) const {
-        for (std::map<std::string, boost::shared_ptr<io::base::detail::hdf5::Group> >::const_iterator it=m_groups.begin(); it != m_groups.end(); ++it){
-          container.push_back(it->first);
-          if (recursive){
-            unsigned pos = container.size();
-            it->second->subgroup_paths(container);
-            for (unsigned p = pos; p < container.size(); ++p){
-              container[p] = it->first + "/" + container[p];
-            }
-          }
-        }
-      }
-
-      /**
-       * Callback function for group iteration. Two cases are blessed here:
-       *
-       * 1. Object is another group. In this case just instantiate the group and
-       *    recursively iterate from there
-       * 2. Object is a dataset. Instantiate it.
-       *
-       * Only hard-links are considered. At the time being, no soft links.
-       */
-      herr_t iterate_callback(hid_t group, const char *name,
-          const H5L_info_t *info);
-
-    public: //attribute support
-
-      /**
-       * Gets the current type set for an attribute
-       */
-      void gettype_attribute(const std::string& name, HDF5Type& type) const;
-
-      /**
-       * Sets a scalar attribute on the current group. Setting an existing
-       * attribute overwrites its value.
-       *
-       * @note Only simple scalars are supported for the time being
-       */
-      template <typename T> void set_attribute(const std::string& name,
-          const T& v) {
-        bob::io::base::HDF5Type dest_type(v);
-        write_attribute(name, dest_type, reinterpret_cast<const void*>(&v));
-      }
-
-      /**
-       * Reads an attribute from the current group. Raises an error if such
-       * attribute does not exist on the group. To check for existence, use
-       * has_attribute().
-       */
-      template <typename T> T get_attribute(const std::string& name) const {
-        T v;
-        bob::io::base::HDF5Type dest_type(v);
-        read_attribute(name, dest_type, reinterpret_cast<void*>(&v));
-        return v;
-      }
-
-      /**
-       * Checks if a certain attribute exists in this group.
-       */
-      bool has_attribute(const std::string& name) const;
-
-      /**
-       * Deletes an attribute
-       */
-      void delete_attribute(const std::string& name);
-
-      /**
-       * List attributes available on this dataset.
-       */
-      void list_attributes(std::map<std::string, bob::io::base::HDF5Type>& attributes) const;
-
-    public: //array attribute support
-
-      /**
-       * Sets a array attribute on the current group. Setting an existing
-       * attribute overwrites its value. If the attribute exists it is erased
-       * and re-written.
-       */
-      template <typename T, int N> void set_array_attribute(const std::string& name,
-          const blitz::Array<T,N>& v) {
-        bob::io::base::HDF5Type dest_type(v);
-        if(!bob::core::array::isCZeroBaseContiguous(v)) {
-          blitz::Array<T,N> tmp = bob::core::array::ccopy(v);
-          write_attribute(name, dest_type, reinterpret_cast<const void*>(tmp.data()));
-        }
-        else {
-          write_attribute(name, dest_type, reinterpret_cast<const void*>(v.data()));
-        }
-      }
-
-      /**
-       * Reads an attribute from the current dataset. Raises an error if such
-       * attribute does not exist on the group. To check for existence, use
-       * has_attribute().
-       */
-      template <typename T, int N> blitz::Array<T,N> get_array_attribute
-        (const std::string& name) const {
-        blitz::Array<T,N> v;
-        bob::io::base::HDF5Type dest_type(v);
-        read_attribute(name, dest_type, reinterpret_cast<void*>(v.data()));
-        return v;
-      }
-
-      /**
-       * Reads an attribute from the current dataset. Places the data in an
-       * already allocated array.
-       */
-      template <typename T, int N> void get_array_attribute
-        (const std::string& name, blitz::Array<T,N>& v) const {
-        bob::io::base::HDF5Type dest_type(v);
-        read_attribute(name, dest_type, reinterpret_cast<void*>(v.data()));
-      }
-
-    public: //buffer attribute support
-
-      /**
-       * Reads an attribute into a user buffer. It is the user's responsibility
-       * to have a buffer that represents the given type.
-       */
-      void read_attribute (const std::string& name,
-          const bob::io::base::HDF5Type& dest, void* buffer) const;
-
-      /**
-       * Writes the contents of a given buffer into the attribute.
-       */
-      void write_attribute (const std::string& name,
-          const bob::io::base::HDF5Type& dest, const void* buffer);
-
-    private: //not implemented
-
-      /**
-       * Copies the contents of an existing group -- not implemented
-       */
-      Group(const Group& other);
-
-      /**
-       * Assigns the contents of an existing group to myself -- not
-       * implemented
-       */
-      Group& operator= (const Group& other);
-
-    private: //representation
-
-      std::string m_name; ///< my name
-      boost::shared_ptr<hid_t> m_id; ///< the HDF5 Group this object points to
-      boost::weak_ptr<Group> m_parent;
-      std::map<std::string, boost::shared_ptr<Group> > m_groups;
-      std::map<std::string, boost::shared_ptr<Dataset> > m_datasets;
-      //std::map<std::string, boost::shared_ptr<Attribute> > m_attributes;
-
-  };
-
-  /**
-   * The RootGroup is a special case of the Group object that is directly
-   * attached to the File (no parents).
-   */
-  class RootGroup: public Group {
-
-    public: //api
-
-      /**
-       * Binds to the root group of a file.
-       */
-      RootGroup(boost::shared_ptr<File> parent);
-
-      /**
-       * D'tor - presently, does nothing
-       */
-      virtual ~RootGroup();
-
-      /**
-       * Get parent group
-       */
-      virtual const boost::shared_ptr<Group> parent() const {
-        return boost::shared_ptr<Group>();
-      }
-
-      /**
-       * Get parent group
-       */
-      virtual boost::shared_ptr<Group> parent() {
-        return boost::shared_ptr<Group>();
-      }
-
-      /**
-       * Filename where I'm sitting
-       */
-      virtual const std::string& filename() const;
-
-      /**
-       * Full path to myself. Constructed each time it is called.
-       */
-      virtual std::string path() const {
-        return "";
-      }
-
-      /**
-       * Access file
-       */
-      virtual const boost::shared_ptr<File> file() const {
-        return m_parent.lock();
-      }
-
-      virtual boost::shared_ptr<File> file() {
-        return m_parent.lock();
-      }
-
-    private: //representation
-
-      boost::weak_ptr<File> m_parent; ///< the file I belong to
-
-  };
-
-  /**
-   * std::string specialization
-   */
-  template <> void Group::set_attribute<std::string>(const std::string& name, const std::string& v);
-  template <> std::string Group::get_attribute(const std::string& name) const;
-
-}}}}}
-
-#endif /* BOB_IO_BASE_HDF5GROUP_H */
diff --git a/bob/io/base/include/bob.io.base/HDF5Types.h b/bob/io/base/include/bob.io.base/HDF5Types.h
deleted file mode 100644
index d19eab3..0000000
--- a/bob/io/base/include/bob.io.base/HDF5Types.h
+++ /dev/null
@@ -1,508 +0,0 @@
-/**
- * @date Wed Jun 22 17:50:08 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief A few helpers to handle HDF5 datasets in a more abstract way.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_HDF5TYPES_H
-#define BOB_IO_BASE_HDF5TYPES_H
-
-#include <vector>
-#include <string>
-#include <boost/shared_ptr.hpp>
-#include <blitz/array.h>
-#include <hdf5.h>
-
-/**
- * Checks if the version of HDF5 installed is greater or equal to some set of
- * values. (extracted from hdf5-1.8.7)
- */
-#ifndef H5_VERSION_GE
-#define H5_VERSION_GE(Maj,Min,Rel) \
- (((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR==Min) && (H5_VERS_RELEASE>=Rel)) || \
-  ((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR>Min)) || \
-  (H5_VERS_MAJOR>Maj))
-#endif
-
-#include <bob.io.base/array.h>
-
-namespace bob { namespace io { namespace base {
-
-  /**
-   * Supported types
-   */
-  typedef enum hdf5type {
-    s=0, //std::string
-    b, //bool
-    i8, //int8_t
-    i16, //int16_t
-    i32, //int32_t
-    i64, //int64_t
-    u8, //uint8_t
-    u16, //uint16_t
-    u32, //uint32_t
-    u64, //uint64_t
-    f32, //float
-    f64, //double
-    f128, //long double
-    c64, //std::complex<float>
-    c128, //std::complex<double>
-    c256, //std::complex<long double>
-    unsupported //this must be last
-  } hdf5type;
-
-  /**
-   * Converts a hdf5type enumeration into its string representation
-   */
-  const char* stringize (hdf5type t);
-
-  /**
-   * A wrapper to handle the HDF5 C-API error printing in a nicer way...
-   */
-  class HDF5ErrorStack {
-
-    public: //api
-
-      /**
-       * Binds the HDF5Error to the current default error stack.
-       */
-      HDF5ErrorStack ();
-
-      /**
-       * Binds to a specific HDF5 error stack
-       */
-      HDF5ErrorStack (hid_t stack);
-
-      /**
-       * Destructor virtualization.
-       */
-      virtual ~HDF5ErrorStack();
-
-      /**
-       * Returns the currently captured error stack
-       */
-      inline std::vector<std::string>& get() { return m_err; }
-
-      /**
-       * Clears the current error stack
-       */
-      inline void clear() { m_err.clear(); }
-
-      /**
-       * Sets muting
-       */
-      inline void mute () { m_muted = true; }
-      inline void unmute () { m_muted = false; }
-      inline bool muted () const { return m_muted; }
-
-    private: //not implemented
-
-      HDF5ErrorStack(const HDF5ErrorStack& other);
-
-      HDF5ErrorStack& operator= (const HDF5ErrorStack& other);
-
-    private: //representation
-      hid_t m_stack; ///< the stack I'm observing
-      bool m_muted; ///< if I'm currently muted
-      std::vector<std::string> m_err; ///< the current captured stack
-      herr_t (*m_func)(hid_t, void*); ///< temporary cache
-      void* m_client_data; ///< temporary cache
-
-  };
-
-  // Global default HDF5 error stack
-  extern const boost::shared_ptr<HDF5ErrorStack> DefaultHDF5ErrorStack;
-
-  /**
-   * This class defines the shape type: a counter and a variable-size hsize_t
-   * array that contains the dimensionality of a certain array. Internally, we
-   * always allocate a fixed size vector with 12 positions (after the maximum
-   * number of dimensions of a blitz::Array<T,N> + 1).
-   */
-  class HDF5Shape {
-
-# define MAX_HDF5SHAPE_SIZE 12
-
-    public: //api
-
-      /**
-       * Builds a new shape with a certain size and values. The size has to be
-       * smaller than the maximum number of supported dimensions (12).
-       */
-      template <typename T> HDF5Shape(const size_t n, const T* values):
-        m_n(n), m_shape() {
-          if (n > MAX_HDF5SHAPE_SIZE)
-            throw std::length_error("maximum number of dimensions exceeded");
-          for (size_t i=0; i<n; ++i) m_shape[i] = values[i];
-        }
-
-      /**
-       * Builds a new shape with data from a blitz::TinyVector
-       */
-      template <int N> HDF5Shape(const blitz::TinyVector<int,N>& vec):
-        m_n(N), m_shape() {
-          if (N > MAX_HDF5SHAPE_SIZE)
-            throw std::length_error("maximum number of dimensions exceeded");
-          for (size_t i=0; i<N; ++i) m_shape[i] = vec[i];
-        }
-
-      /**
-       * Allocates the shape space, but fills all with zeros
-       */
-      HDF5Shape (size_t n);
-
-      /**
-       * Default constructor (m_n = 0, no shape)
-       */
-      HDF5Shape ();
-
-      /**
-       * Copy construct the shape
-       */
-      HDF5Shape (const HDF5Shape& other);
-
-      /**
-       * Virtual destructor
-       */
-      virtual ~HDF5Shape();
-
-      /**
-       * Resets this new shape
-       */
-      HDF5Shape& operator= (const HDF5Shape& other);
-
-      /**
-       * Returns the current size of shape. If values are less than zero, the
-       * shape is not valid.
-       */
-      inline size_t n () const { return m_n; }
-
-      /**
-       * Returs a pointer to the first element of the shape
-       */
-      inline const hsize_t* get() const { return m_shape; }
-      inline hsize_t* get() { return m_shape; }
-
-      /**
-       * Copies the data from the other HDF5Shape. If the other shape is
-       * smaller, will copy up to the number of positions in the other shape,
-       * if it is bigger, will copy up to my number of positions.
-       */
-      void copy(const HDF5Shape& other);
-
-      /**
-       * Sets a TinyVector with the contents of this shape. If the tinyvector
-       * shape is smaller, will copy up to the number of positions in the
-       * current shape. If that is bigger, will copy up to my number of
-       * positions
-       */
-      template <int N> void set (blitz::TinyVector<int,N>& v) const {
-        if (N >= m_n) for (size_t i=0; i<m_n; ++i) v[i] = m_shape[i];
-        else for (size_t i=0; i<N; ++i) v[i] = m_shape[i];
-      }
-
-      /**
-       * Resets the current shape so it becomes invalid.
-       */
-      void reset();
-
-      /**
-       * Accesses a certain position of this shape (unchecked!)
-       */
-      inline const hsize_t& operator[] (size_t pos) const { return m_shape[pos]; }
-      inline hsize_t& operator[] (size_t pos) { return m_shape[pos]; }
-
-      /**
-       * Left-shift a number of positions, decreases the total size.
-       */
-      HDF5Shape& operator <<= (size_t pos);
-
-      /**
-       * Right-shift a number of positions, increases the total size. New
-       * positions are filled with 1's (ones).
-       */
-      HDF5Shape& operator >>= (size_t pos);
-
-      /**
-       * Returns the product of all dimensions
-       */
-      hsize_t product() const;
-
-      /**
-       * Compares two shapes for equality
-       */
-      bool operator== (const HDF5Shape& other) const;
-      bool operator!= (const HDF5Shape& other) const;
-
-      /**
-       * Compares a shape with a TinyVector for equality
-       */
-      template <int N>
-      bool operator== (const blitz::TinyVector<int,N>& other) const {
-        if (N != m_n) return false;
-        for (size_t i=0; i<m_n; ++i) if (m_shape[i] != other[i]) return false;
-        return true;
-      }
-
-      template <int N>
-      bool operator!= (const blitz::TinyVector<int,N>& other) const {
-        return !(*this == other);
-      }
-
-      /**
-       * Tells if this shape is invalid
-       */
-      inline bool operator! () const { return m_n == 0; }
-
-      /**
-       * Returns a tuple-like string representation for this shape
-       */
-      std::string str() const;
-
-    private: //representation
-      size_t m_n; ///< The number of valid hsize_t's in this shape
-      hsize_t m_shape[MAX_HDF5SHAPE_SIZE]; ///< The actual shape values
-
-  };
-
-  /**
-   * Support to compare data types, convert types into runtime equivalents and
-   * make our life easier when deciding what to input and output.
-   */
-  class HDF5Type {
-
-    public:
-
-      /**
-       * Specific implementations bind the type T to the support_t enum
-       */
-#     define DECLARE_SUPPORT(T) HDF5Type(const T& value);
-      DECLARE_SUPPORT(bool)
-      DECLARE_SUPPORT(int8_t)
-      DECLARE_SUPPORT(int16_t)
-      DECLARE_SUPPORT(int32_t)
-      DECLARE_SUPPORT(int64_t)
-      DECLARE_SUPPORT(uint8_t)
-      DECLARE_SUPPORT(uint16_t)
-      DECLARE_SUPPORT(uint32_t)
-      DECLARE_SUPPORT(uint64_t)
-      DECLARE_SUPPORT(float)
-      DECLARE_SUPPORT(double)
-      DECLARE_SUPPORT(long double)
-      DECLARE_SUPPORT(std::complex<float>)
-      DECLARE_SUPPORT(std::complex<double>)
-      DECLARE_SUPPORT(std::complex<long double>)
-#     undef DECLARE_SUPPORT
-
-      /**
-       * Builds the type from a string (special HDF5 handling)
-       */
-      HDF5Type(const char* value);
-      HDF5Type(const std::string& value);
-
-#     define DECLARE_SUPPORT(T,N) HDF5Type(const blitz::Array<T,N>& value);
-
-#     define DECLARE_BZ_SUPPORT(T) \
-      DECLARE_SUPPORT(T,1) \
-      DECLARE_SUPPORT(T,2) \
-      DECLARE_SUPPORT(T,3) \
-      DECLARE_SUPPORT(T,4)
-
-      DECLARE_BZ_SUPPORT(bool)
-      DECLARE_BZ_SUPPORT(int8_t)
-      DECLARE_BZ_SUPPORT(int16_t)
-      DECLARE_BZ_SUPPORT(int32_t)
-      DECLARE_BZ_SUPPORT(int64_t)
-      DECLARE_BZ_SUPPORT(uint8_t)
-      DECLARE_BZ_SUPPORT(uint16_t)
-      DECLARE_BZ_SUPPORT(uint32_t)
-      DECLARE_BZ_SUPPORT(uint64_t)
-      DECLARE_BZ_SUPPORT(float)
-      DECLARE_BZ_SUPPORT(double)
-      DECLARE_BZ_SUPPORT(long double)
-      DECLARE_BZ_SUPPORT(std::complex<float>)
-      DECLARE_BZ_SUPPORT(std::complex<double>)
-      DECLARE_BZ_SUPPORT(std::complex<long double>)
-#     undef DECLARE_BZ_SUPPORT
-#     undef DECLARE_SUPPORT
-
-      /**
-       * Default constructor, results in an unsupported type with invalid shape
-       */
-      HDF5Type();
-
-      /**
-       * Creates a HDF5Type from a type enumeration, assumes it is a scalar
-       */
-      HDF5Type(hdf5type type);
-
-      /**
-       * Creates a HDF5Type from an bob::io::base::array::typeinfo
-       */
-      HDF5Type(const bob::io::base::array::typeinfo& ti);
-
-      /**
-       * Creates a HDF5Type from a type enumeration and an explicit shape
-       */
-      HDF5Type(bob::io::base::array::ElementType eltype, const HDF5Shape& extents);
-
-      /**
-       * Creates a HDF5Type from a type enumeration and an explicit shape
-       */
-      HDF5Type(hdf5type type, const HDF5Shape& extents);
-
-      /**
-       * Creates a HDF5Type from a HDF5 Dataset, Datatype and Dataspace
-       */
-      HDF5Type(const boost::shared_ptr<hid_t>& type,
-          const HDF5Shape& extents);
-
-      /**
-       * Scalar of a certain type
-       */
-      HDF5Type(const boost::shared_ptr<hid_t>& type);
-
-      /**
-       * Copy construction
-       */
-      HDF5Type(const HDF5Type& other);
-
-      /**
-       * Virtual destructor
-       */
-      virtual ~HDF5Type();
-
-      /**
-       * Assignment
-       */
-      HDF5Type& operator= (const HDF5Type& other);
-
-      /**
-       * Checks if two types are the same
-       */
-      bool operator== (const HDF5Type& other) const;
-
-      /**
-       * Checks if two types are *not* the same
-       */
-      bool operator!= (const HDF5Type& other) const;
-
-      /**
-       * Checks if an existing object is compatible with my type
-       */
-      template <typename T> bool compatible (const T& value) const {
-        return *this == HDF5Type(value);
-      }
-
-      /**
-       * Checks if an existing object is compatible with my type
-       */
-      bool compatible (const bob::io::base::array::typeinfo& value) const;
-
-      /**
-       * Returns the HDF5Shape of this type
-       */
-      const HDF5Shape& shape() const { return m_shape; }
-
-      /**
-       * Returns the HDF5Shape of this type
-       */
-      HDF5Shape& shape() { return m_shape; }
-
-      /**
-       * Returns the equivalent HDF5 type info object for this type.
-       */
-      boost::shared_ptr<hid_t> htype() const;
-
-      /**
-       * Returns a string representation of this supported type.
-       */
-      std::string str() const;
-
-      /**
-       * Returns a string representation of the element type.
-       */
-      std::string type_str() const { return stringize(m_type); }
-
-      /**
-       * Returns the current enumeration for the type
-       */
-      inline hdf5type type() const { return m_type; }
-
-      /**
-       * Returns a mapping between the current type and the supported element
-       * types in bob::io::base::array
-       */
-      bob::io::base::array::ElementType element_type() const;
-
-      /**
-       * Copies this type information to a stock bob::io::base::array::typeinfo
-       */
-      void copy_to (bob::io::base::array::typeinfo& ti) const;
-
-    private: //representation
-
-      hdf5type m_type; ///< the precise supported type
-      HDF5Shape m_shape; ///< what is the shape of the type (scalar)
-
-  };
-
-  /**
-   * Describes ways to read a Dataset.
-   */
-  struct HDF5Descriptor {
-
-    public: //api
-
-      /**
-       * Constructor
-       */
-      HDF5Descriptor(const HDF5Type& type, size_t size = 0, bool expand = true);
-
-      /**
-       * Copy constructor
-       */
-      HDF5Descriptor(const HDF5Descriptor& other);
-
-      /**
-       * Virtual destructor
-       */
-      virtual ~HDF5Descriptor();
-
-      /**
-       * Assignment
-       */
-      HDF5Descriptor& operator= (const HDF5Descriptor& other);
-
-      /**
-       * Setup myself as I was supposed to be read from a space with N+1
-       * dimensions.
-       */
-      HDF5Descriptor& subselect();
-
-    public: //representation
-
-      HDF5Type type; ///< base type for read/write operations
-      size_t size; ///< number of objects of this type stored at dataset
-      bool expandable; ///< is this dataset expandable using this type?
-
-      /**
-       * Variables required for fast read/write operations.
-       */
-      HDF5Shape hyperslab_start; ///< offset to read/write operations
-      HDF5Shape hyperslab_count; ///< count for read/write operations
-
-  };
-
-  /**
-   * Format and returns the current HDF5 error stack. It also clears the stack
-   * before returning.
-   */
-  std::string format_hdf5_error();
-
-}}}
-
-#endif /* BOB_IO_BASE_HDF5TYPES_H */
diff --git a/bob/io/base/include/bob.io.base/HDF5Utils.h b/bob/io/base/include/bob.io.base/HDF5Utils.h
deleted file mode 100644
index 670430e..0000000
--- a/bob/io/base/include/bob.io.base/HDF5Utils.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * @date Wed Jun 22 17:50:08 2011 +0200
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief A bunch of private utilities to make programming against the HDF5
- * library a little bit more confortable.
- *
- * Classes and non-member methods in this file handle the low-level HDF5 C-API
- * and try to make it a little bit safer and higher-level for use by the
- * publicly visible HDF5File class. The functionality here is heavily based on
- * boost::shared_ptr's for handling automatic deletion and releasing of HDF5
- * objects. Two top-level classes do the whole work: File and Dataset. The File
- * class represents a raw HDF5 file. You can iterate with it in a very limited
- * way: create one, rename an object or delete one. The Dataset object
- * encapsulates reading and writing of data from a specific HDF5 dataset.
- * Everything is handled automatically and the user should not have to worry
- * about it too much.
- *
- * @todo Missing support for list<std::string>
- * @todo Inprint file creation time, author, comments?
- * @todo Missing support for automatic endianness conversion
- * @todo Missing true support for scalars
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_HDF5UTILS_H
-#define BOB_IO_BASE_HDF5UTILS_H
-
-#include <boost/filesystem.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <hdf5.h>
-
-#include <bob.io.base/HDF5Group.h>
-
-namespace bob { namespace io { namespace base { namespace detail { namespace hdf5 {
-
-  /**
-   * An HDF5 C-style file that knows how to close itself.
-   */
-  class File: public boost::enable_shared_from_this<File> {
-
-    public:
-
-      /**
-       * Creates a new HDF5 file. Optionally set the userblock size (multiple
-       * of 2 number of bytes).
-       */
-      File(const boost::filesystem::path& path, unsigned int flags,
-          size_t userblock_size=0);
-
-      /**
-       * Copies a file by creating a copy of each of its groups
-       */
-      File(const File& other);
-
-      /**
-       * Destructor virtualization
-       */
-      virtual ~File();
-
-      /**
-       * Assignment
-       */
-      File& operator= (const File& other);
-
-      /**
-       * Accesses the current location id of this file
-       */
-      const boost::shared_ptr<hid_t> location() const {
-        return m_id;
-      }
-      boost::shared_ptr<hid_t> location() {
-        return m_id;
-      }
-
-      /**
-       * Returns the userblock size
-       */
-      size_t userblock_size() const;
-
-      /**
-       * Copies the userblock into a string -- not yet implemented. If you want
-       * to do it, read the code for the command-line utilitlies h5jam and
-       * h5unjam.
-       */
-      void get_userblock(std::string& data) const;
-
-      /**
-       * Writes new data to the user block. Data is truncated up to the size
-       * set during file creation -- not yet implemented. If you want to do it,
-       * read the code for the command-line utilitlies h5jam and h5unjam.
-       */
-      void set_userblock(const std::string& data);
-
-      /**
-       * Gets the current path
-       */
-      const std::string& filename() const {
-        return m_path.string();
-      }
-
-      /**
-       * Returns the root group
-       */
-      boost::shared_ptr<RootGroup> root();
-
-      /**
-       * Resets this file, sets to read again all groups and datasets
-       */
-      void reset();
-
-      /**
-       * Flushes the current content of the file to disk
-       */
-      void flush();
-
-      /**
-       * Tells if this file is writable
-       */
-      bool writable() const;
-
-    private: //representation
-
-      const boost::filesystem::path m_path; ///< path to the file
-      unsigned int m_flags; ///< flags used to open it
-      boost::shared_ptr<hid_t> m_fcpl; ///< file creation property lists
-      boost::shared_ptr<hid_t> m_id; ///< the HDF5 id attributed to this file.
-      boost::shared_ptr<RootGroup> m_root;
-  };
-
-}}}}}
-
-#endif /* BOB_IO_BASE_HDF5UTILS_H */
diff --git a/bob/io/base/include/bob.io.base/api.h b/bob/io/base/include/bob.io.base/api.h
deleted file mode 100644
index fe714e4..0000000
--- a/bob/io/base/include/bob.io.base/api.h
+++ /dev/null
@@ -1,304 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Tue  5 Nov 12:22:48 2013
- *
- * @brief Python API for bob::io::base
- */
-
-#ifndef BOB_IO_BASE_H
-#define BOB_IO_BASE_H
-
-/* Define Module Name and Prefix for other Modules
-   Note: We cannot use BOB_EXT_* macros here, unfortunately */
-#define BOB_IO_BASE_PREFIX    "bob.io.base"
-#define BOB_IO_BASE_FULL_NAME "bob.io.base._library"
-
-#include <Python.h>
-
-#include <bob.io.base/config.h>
-#include <bob.io.base/File.h>
-#include <bob.io.base/CodecRegistry.h>
-#include <bob.io.base/HDF5File.h>
-
-#include <boost/shared_ptr.hpp>
-
-/*******************
- * C API functions *
- *******************/
-
-/* Enum defining entries in the function table */
-enum _PyBobIo_ENUM{
-  PyBobIo_APIVersion_NUM = 0,
-  // Bindings for bob.io.base.File
-  PyBobIoFile_Type_NUM,
-  PyBobIoFileIterator_Type_NUM,
-  // I/O generic bindings
-  PyBobIo_AsTypenum_NUM,
-  PyBobIo_TypeInfoAsTuple_NUM,
-  PyBobIo_FilenameConverter_NUM,
-  // HDF5 bindings
-  PyBobIoHDF5File_Type_NUM,
-  PyBobIoHDF5File_Check_NUM,
-  PyBobIoHDF5File_Converter_NUM,
-  // Codec registration and de-registration
-  PyBobIoCodec_Register_NUM,
-  PyBobIoCodec_Deregister_NUM,
-  PyBobIoCodec_IsRegistered_NUM,
-  PyBobIoCodec_GetDescription_NUM,
-  // Total number of C API pointers
-  PyBobIo_API_pointers
-};
-
-/**************
- * Versioning *
- **************/
-
-#define PyBobIo_APIVersion_TYPE int
-
-/**********************************
- * Bindings for bob.io.base.File *
- **********************************/
-
-/* Type definition for PyBobIoFileObject */
-typedef struct {
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  boost::shared_ptr<bob::io::base::File> f;
-
-} PyBobIoFileObject;
-
-#define PyBobIoFile_Type_TYPE PyTypeObject
-
-typedef struct {
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  PyBobIoFileObject* pyfile;
-  Py_ssize_t curpos;
-
-} PyBobIoFileIteratorObject;
-
-#define PyBobIoFileIterator_Type_TYPE PyTypeObject
-
-/************************
- * I/O generic bindings *
- ************************/
-
-#define PyBobIo_AsTypenum_RET int
-#define PyBobIo_AsTypenum_PROTO (bob::io::base::array::ElementType et)
-
-#define PyBobIo_TypeInfoAsTuple_RET PyObject*
-#define PyBobIo_TypeInfoAsTuple_PROTO (const bob::io::base::array::typeinfo& ti)
-
-#define PyBobIo_FilenameConverter_RET int
-#define PyBobIo_FilenameConverter_PROTO (PyObject* o, const char** b)
-
-/*****************
- * HDF5 bindings *
- *****************/
-
-typedef struct {
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  boost::shared_ptr<bob::io::base::HDF5File> f;
-
-} PyBobIoHDF5FileObject;
-
-#define PyBobIoHDF5File_Type_TYPE PyTypeObject
-
-#define PyBobIoHDF5File_Check_RET int
-#define PyBobIoHDF5File_Check_PROTO (PyObject* o)
-
-#define PyBobIoHDF5File_Converter_RET int
-#define PyBobIoHDF5File_Converter_PROTO (PyObject* o, PyBobIoHDF5FileObject** a)
-
-/*****************************************
- * Code Registration and De-registration *
- *****************************************/
-
-#define PyBobIoCodec_Register_RET int
-#define PyBobIoCodec_Register_PROTO (const char* extension, const char* description, bob::io::base::file_factory_t factory)
-
-#define PyBobIoCodec_Deregister_RET int
-#define PyBobIoCodec_Deregister_PROTO (const char* extension)
-
-#define PyBobIoCodec_IsRegistered_RET int
-#define PyBobIoCodec_IsRegistered_PROTO (const char* extension)
-
-#define PyBobIoCodec_GetDescription_RET const char*
-#define PyBobIoCodec_GetDescription_PROTO (const char* extension)
-
-#ifdef BOB_IO_BASE_MODULE
-
-  /* This section is used when compiling `bob.io.base' itself */
-
-  /**************
-   * Versioning *
-   **************/
-
-  extern int PyBobIo_APIVersion;
-
-  /**********************************
-   * Bindings for bob.io.base.File *
-   **********************************/
-
-  extern PyBobIoFile_Type_TYPE PyBobIoFile_Type;
-  extern PyBobIoFileIterator_Type_TYPE PyBobIoFileIterator_Type;
-
-  /************************
-   * I/O generic bindings *
-   ************************/
-
-  PyBobIo_AsTypenum_RET PyBobIo_AsTypenum PyBobIo_AsTypenum_PROTO;
-
-  PyBobIo_TypeInfoAsTuple_RET PyBobIo_TypeInfoAsTuple PyBobIo_TypeInfoAsTuple_PROTO;
-
-  PyBobIo_FilenameConverter_RET PyBobIo_FilenameConverter PyBobIo_FilenameConverter_PROTO;
-
-/*****************
- * HDF5 bindings *
- *****************/
-
-  extern PyBobIoHDF5File_Type_TYPE PyBobIoHDF5File_Type;
-
-  PyBobIoHDF5File_Check_RET PyBobIoHDF5File_Check PyBobIoHDF5File_Check_PROTO;
-
-  PyBobIoHDF5File_Converter_RET PyBobIoHDF5File_Converter PyBobIoHDF5File_Converter_PROTO;
-
-/*****************************************
- * Code Registration and De-registration *
- *****************************************/
-
- PyBobIoCodec_Register_RET PyBobIoCodec_Register PyBobIoCodec_Register_PROTO;
-
- PyBobIoCodec_Deregister_RET PyBobIoCodec_Deregister PyBobIoCodec_Deregister_PROTO;
-
- PyBobIoCodec_IsRegistered_RET PyBobIoCodec_IsRegistered PyBobIoCodec_IsRegistered_PROTO;
-
- PyBobIoCodec_GetDescription_RET PyBobIoCodec_GetDescription PyBobIoCodec_GetDescription_PROTO;
-
-#else // BOB_IO_BASE_MODULE
-
-  /* This section is used in modules that use `bob.io.base's' C-API */
-
-#  if defined(NO_IMPORT_ARRAY)
-  extern void **PyBobIo_API;
-#  else
-#    if defined(PY_ARRAY_UNIQUE_SYMBOL)
-  void **PyBobIo_API;
-#    else
-  static void **PyBobIo_API=NULL;
-#    endif
-#  endif
-
-  /**************
-   * Versioning *
-   **************/
-
-# define PyBobIo_APIVersion (*(PyBobIo_APIVersion_TYPE *)PyBobIo_API[PyBobIo_APIVersion_NUM])
-
-  /*****************************
-   * Bindings for bob.io.File *
-   *****************************/
-
-# define PyBobIoFile_Type (*(PyBobIoFile_Type_TYPE *)PyBobIo_API[PyBobIoFile_Type_NUM])
-# define PyBobIoFileIterator_Type (*(PyBobIoFileIterator_Type_TYPE *)PyBobIo_API[PyBobIoFileIterator_Type_NUM])
-
-  /************************
-   * I/O generic bindings *
-   ************************/
-
-# define PyBobIo_AsTypenum (*(PyBobIo_AsTypenum_RET (*)PyBobIo_AsTypenum_PROTO) PyBobIo_API[PyBobIo_AsTypenum_NUM])
-
-# define PyBobIo_TypeInfoAsTuple (*(PyBobIo_TypeInfoAsTuple_RET (*)PyBobIo_TypeInfoAsTuple_PROTO) PyBobIo_API[PyBobIo_TypeInfoAsTuple_NUM])
-
-# define PyBobIo_FilenameConverter (*(PyBobIo_FilenameConverter_RET (*)PyBobIo_FilenameConverter_PROTO) PyBobIo_API[PyBobIo_FilenameConverter_NUM])
-
-  /*****************
-   * HDF5 bindings *
-   *****************/
-
-# define PyBobIoHDF5File_Type (*(PyBobIoHDF5File_Type_TYPE *)PyBobIo_API[PyBobIoHDF5File_Type_NUM])
-
-# define PyBobIoHDF5File_Check (*(PyBobIoHDF5File_Check_RET (*)PyBobIoHDF5File_Check_PROTO) PyBobIo_API[PyBobIoHDF5File_Check_NUM])
-
-# define PyBobIoHDF5File_Converter (*(PyBobIoHDF5File_Converter_RET (*)PyBobIoHDF5File_Converter_PROTO) PyBobIo_API[PyBobIoHDF5File_Converter_NUM])
-
-/*****************************************
- * Code Registration and De-registration *
- *****************************************/
-
-# define PyBobIoCodec_Register (*(PyBobIoCodec_Register_RET (*)PyBobIoCodec_Register_PROTO) PyBobIo_API[PyBobIoCodec_Register_NUM])
-
-# define PyBobIoCodec_Deregister (*(PyBobIoCodec_Deregister_RET (*)PyBobIoCodec_Deregister_PROTO) PyBobIo_API[PyBobIoCodec_Deregister_NUM])
-
-# define PyBobIoCodec_IsRegistered (*(PyBobIoCodec_IsRegistered_RET (*)PyBobIoCodec_IsRegistered_PROTO) PyBobIo_API[PyBobIoCodec_IsRegistered_NUM])
-
-# define PyBobIoCodec_GetDescription (*(PyBobIoCodec_GetDescription_RET (*)PyBobIoCodec_GetDescription_PROTO) PyBobIo_API[PyBobIoCodec_GetDescription_NUM])
-
-# if !defined(NO_IMPORT_ARRAY)
-
-  /**
-   * Returns -1 on error, 0 on success.
-   */
-  static int import_bob_io_base(void) {
-
-    PyObject *c_api_object;
-    PyObject *module;
-
-    module = PyImport_ImportModule(BOB_IO_BASE_FULL_NAME);
-
-    if (module == NULL) return -1;
-
-    c_api_object = PyObject_GetAttrString(module, "_C_API");
-
-    if (c_api_object == NULL) {
-      Py_DECREF(module);
-      return -1;
-    }
-
-#   if PY_VERSION_HEX >= 0x02070000
-    if (PyCapsule_CheckExact(c_api_object)) {
-      PyBobIo_API = (void **)PyCapsule_GetPointer(c_api_object,
-          PyCapsule_GetName(c_api_object));
-    }
-#   else
-    if (PyCObject_Check(c_api_object)) {
-      PyBobIo_API = (void **)PyCObject_AsVoidPtr(c_api_object);
-    }
-#   endif
-
-    Py_DECREF(c_api_object);
-    Py_DECREF(module);
-
-    if (!PyBobIo_API) {
-      PyErr_SetString(PyExc_ImportError, "cannot find C/C++ API "
-#   if PY_VERSION_HEX >= 0x02070000
-          "capsule"
-#   else
-          "cobject"
-#   endif
-          " at `" BOB_IO_BASE_FULL_NAME "._C_API'");
-      return -1;
-    }
-
-    /* Checks that the imported version matches the compiled version */
-    int imported_version = *(int*)PyBobIo_API[PyBobIo_APIVersion_NUM];
-
-    if (BOB_IO_BASE_API_VERSION != imported_version) {
-      PyErr_Format(PyExc_ImportError, BOB_IO_BASE_FULL_NAME " import error: you compiled against API version 0x%04x, but are now importing an API with version 0x%04x which is not compatible - check your Python runtime environment for errors", BOB_IO_BASE_API_VERSION, imported_version);
-      return -1;
-    }
-
-    /* If you get to this point, all is good */
-    return 0;
-
-  }
-
-# endif //!defined(NO_IMPORT_ARRAY)
-
-#endif /* BOB_IO_BASE_MODULE */
-
-#endif /* BOB_IO_BASE_H */
diff --git a/bob/io/base/include/bob.io.base/array.h b/bob/io/base/include/bob.io.base/array.h
deleted file mode 100644
index 570c09f..0000000
--- a/bob/io/base/include/bob.io.base/array.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
- * @date Tue Nov 8 15:34:31 2011 +0100
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief The array API describes a non-specific way to handle N dimensional
- * array data.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_ARRAY_INTERFACE_H
-#define BOB_IO_BASE_ARRAY_INTERFACE_H
-
-#include <stdexcept>
-#include <string>
-
-#include <boost/shared_ptr.hpp>
-#include <blitz/array.h>
-
-#include <bob.io.base/array_type.h>
-
-/* MinGW flags */
-#ifdef _WIN32
-#undef interface
-#endif
-
-/**
- * @brief Array submodule API of the I/O module
- */
-namespace bob { namespace io { namespace base { namespace array {
-
-  /**
-   * @brief Encapsulation of special type information of interfaces.
-   */
-  struct typeinfo {
-
-    ElementType dtype; ///< data type
-    size_t nd; ///< number of dimensions
-    size_t shape[BOB_MAX_DIM+1]; ///< length along each dimension
-    size_t stride[BOB_MAX_DIM+1]; ///< strides along each dimension
-
-    /**
-     * @brief Default constructor
-     */
-    typeinfo();
-
-    /**
-     * @brief Simplification to build a typeinfo from a size
-     */
-    template <typename T> typeinfo(ElementType dtype_, T nd_) {
-      set(dtype_, nd_);
-    }
-
-    /**
-     * @brief Simplification to build a typeinfo from a shape pointer.
-     */
-    template <typename T> typeinfo(ElementType dtype_, T nd_, const T* shape_) {
-      set(dtype_, nd_, shape_);
-    }
-
-    /**
-     * @brief Copies information from another typeinfo
-     */
-    typeinfo(const typeinfo& other);
-
-    /**
-     * @brief Assignment
-     */
-    typeinfo& operator= (const typeinfo& other);
-
-    /**
-     * @brief Builds with type and number of dimensions, but set the shape and
-     * strides to all zeros.
-     */
-    template <typename T>
-    void set(ElementType dtype_, T nd_) {
-      dtype = dtype_;
-      nd = nd_;
-      reset_shape();
-    }
-
-    /**
-     * @brief Set to specific values
-     */
-    template <typename T>
-    void set(ElementType dtype_, T nd_, const T* shape_) {
-      dtype = dtype_;
-      set_shape(nd_, shape_);
-    }
-
-    /**
-     * @brief Set to specific values, including strides
-     */
-    template <typename T>
-    void set(ElementType dtype_, T nd_, const T* shape_,
-        const T* stride_) {
-      dtype = dtype_;
-      nd = nd_;
-      for (size_t k=0; k<nd; ++k) {
-        shape[k] = shape_[k];
-        stride[k] = stride_[k];
-      }
-    }
-
-    /**
-     * @brief Reset to defaults -- as if uninitialized.
-     */
-    void reset();
-
-    /**
-     * @brief Is this a valid type information?
-     */
-    bool is_valid() const;
-
-    /**
-     * @brief Does this has a valid shape information?
-     */
-    bool has_valid_shape() const;
-
-    /**
-     * @brief sets the shape
-     */
-    template <typename T> void set_shape(T nd_, const T* shape_) {
-      if (nd_ > (BOB_MAX_DIM+1))
-        throw std::runtime_error("unsupported number of dimensions");
-      nd = nd_;
-      for (size_t k=0; k<nd; ++k) shape[k] = shape_[k];
-      update_strides();
-    }
-
-    /**
-     * @brief resets the shape to all zeros
-     */
-    void reset_shape();
-
-    /**
-     * @brief Update my own stride vector. Called automatically after any use
-     * of set_shape().
-     */
-    void update_strides();
-
-    /**
-     * @brief Returns the total number of elements available
-     */
-    size_t size() const;
-
-    /**
-     * @brief Returns the size of each element
-     */
-    inline size_t item_size() const { return getElementSize(dtype); }
-
-    /**
-     * @brief Returns the total size (in bytes) of the buffer that I'm
-     * associated with.
-     */
-    size_t buffer_size() const;
-
-    /**
-     * @brief Returns the item type description
-     */
-    const char* item_str() const { return stringize(dtype); }
-
-    /**
-     * @brief Checks compatibility with other typeinfo
-     */
-    bool is_compatible(const typeinfo& other) const;
-
-    /**
-     * @brief Formats and returns a string containing the full typeinfo
-     * description.
-     */
-    std::string str() const;
-
-    /**
-     * @brief Make it easy to set for blitz::Array<T,N>
-     */
-    template <typename T, int N> void set(const blitz::Array<T,N>& array) {
-      dtype = getElementType<T>();
-      set_shape(array.shape());
-    }
-
-    template <typename T, int N>
-      void set(boost::shared_ptr<blitz::Array<T,N> >& array) {
-        dtype = getElementType<T>();
-        set_shape(array->shape());
-      }
-
-    template <int N> void set_shape(const blitz::TinyVector<int,N>& tv_shape) {
-      nd = N;
-      for (size_t k=0; k<nd; ++k) shape[k] = tv_shape(k);
-      update_strides();
-    }
-
-  };
-
-  /**
-   * @brief The interface manager introduces a concept for managing the
-   * interfaces that can be handled as C-style arrays. It encapsulates methods
-   * to store and delete the buffer contents in a safe way.
-   *
-   * The interface is an entity that either stores a copy of its own data or
-   * refers to data belonging to another interface.
-   */
-  class interface {
-
-    public: //api
-
-      /**
-       * @brief By default, the interface is never freed. You must override
-       * this method to do something special for your class type.
-       */
-      virtual ~interface() { }
-
-      /**
-       * @brief Copies the data from another interface.
-       */
-      virtual void set(const interface& other) =0;
-
-      /**
-       * @brief Refers to the data of another interface.
-       */
-      virtual void set(boost::shared_ptr<interface> other) =0;
-
-      /**
-       * @brief Re-allocates this interface taking into consideration new
-       * requirements. The internal memory should be considered uninitialized.
-       */
-      virtual void set (const typeinfo& req) =0;
-
-      /**
-       * @brief Type information for this interface.
-       */
-      virtual const typeinfo& type() const =0;
-
-      /**
-       * @brief Borrows a reference from the underlying memory. This means
-       * this object continues to be responsible for deleting the memory and
-       * you should make sure that it outlives the usage of the returned
-       * pointer.
-       */
-      virtual void* ptr() =0;
-      virtual const void* ptr() const =0;
-
-      /**
-       * @brief Returns a representation of the internal cache using shared
-       * pointers.
-       */
-      virtual boost::shared_ptr<void> owner() =0;
-      virtual boost::shared_ptr<const void> owner() const =0;
-
-  };
-
-}}}}
-
-#endif /* BOB_IO_BASE_ARRAY_INTERFACE_H */
diff --git a/bob/io/base/include/bob.io.base/array_type.h b/bob/io/base/include/bob.io.base/array_type.h
deleted file mode 100644
index 89eb1e2..0000000
--- a/bob/io/base/include/bob.io.base/array_type.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * @date Sat Apr 9 18:10:10 2011 +0200
- * @author Laurent El Shafey <Laurent.El-Shafey@idiap.ch>
- *
- * @brief This file contains information about the supported arrays
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_ARRAY_TYPE_H
-#define BOB_IO_BASE_ARRAY_TYPE_H
-
-#include <stdint.h>
-#include <cstdlib>
-#include <complex>
-
-/**
- * @ingroup IO_ARRAY
- * @brief This macro defines the maximum number of dimensions supported by bob.
- * A variable in the bob.io.array namespace is created from this macro
- * receiving the same value. Use that variable on your programs, or this macro
- * on your preprocessor code.
- */
-#define BOB_MAX_DIM 4
-
-namespace bob { namespace io { namespace base { namespace array {
-
-  /**
-   * @brief Enumeration of the supported type for multidimensional arrays
-   * @warning float128 and complex256 are defined but currently not
-   * supported
-   */
-  typedef enum ElementType {
-    t_unknown=0,
-    t_bool=1,
-    t_int8=2,
-    t_int16=3,
-    t_int32=4,
-    t_int64=5,
-    t_uint8=6,
-    t_uint16=7,
-    t_uint32=8,
-    t_uint64=9,
-    t_float32=10,
-    t_float64=11,
-    t_float128=12,
-    t_complex64=13,
-    t_complex128=14,
-    t_complex256=15
-  } ElementType;
-
-  /**
-   * @brief Maximum number of supported dimensions for multidimensional
-   * arrays.
-   */
-  const size_t N_MAX_DIMENSIONS_ARRAY = BOB_MAX_DIM;
-
-  /**
-   * @brief These are some type to element type conversions
-   */
-  template<typename T> ElementType getElementType() {
-    return t_unknown;
-  }
-
-  /**
-   * @brief Some specializations that convert type to element type.
-   */
-  template<> inline ElementType getElementType<bool>() { return t_bool; }
-  template<> inline ElementType getElementType<int8_t>() { return t_int8; }
-  template<> inline ElementType getElementType<int16_t>()
-  { return t_int16; }
-  template<> inline ElementType getElementType<int32_t>()
-  { return t_int32; }
-  template<> inline ElementType getElementType<int64_t>()
-  { return t_int64; }
-  template<> inline ElementType getElementType<uint8_t>()
-  { return t_uint8; }
-  template<> inline ElementType getElementType<uint16_t>()
-  { return t_uint16; }
-  template<> inline ElementType getElementType<uint32_t>()
-  { return t_uint32; }
-  template<> inline ElementType getElementType<uint64_t>()
-  { return t_uint64; }
-  template<> inline ElementType getElementType<float>()
-  { return t_float32; }
-  template<> inline ElementType getElementType<double>()
-  { return t_float64; }
-  template<> inline ElementType getElementType<long double>()
-  { return t_float128; }
-  template<> inline ElementType getElementType<std::complex<float> >()
-  { return t_complex64; }
-  template<> inline ElementType getElementType<std::complex<double> >()
-  { return t_complex128; }
-  template<> inline ElementType getElementType<std::complex<long double> >()
-  { return t_complex256; }
-
-  /**
-   * @brief These are some type to element size conversions
-   */
-  template<typename T> size_t getElementSize() {
-    return 0;
-  }
-
-  /**
-   * @brief Some specializations that convert the types we handle properly
-   */
-  template<> inline size_t getElementSize<bool>() { return sizeof(bool); }
-  template<> inline size_t getElementSize<int8_t>()
-  { return sizeof(int8_t); }
-  template<> inline size_t getElementSize<int16_t>()
-  { return sizeof(int16_t); }
-  template<> inline size_t getElementSize<int32_t>()
-  { return sizeof(int32_t); }
-  template<> inline size_t getElementSize<int64_t>()
-  { return sizeof(int64_t); }
-  template<> inline size_t getElementSize<uint8_t>()
-  { return sizeof(uint8_t); }
-  template<> inline size_t getElementSize<uint16_t>()
-  { return sizeof(uint16_t); }
-  template<> inline size_t getElementSize<uint32_t>()
-  { return sizeof(uint32_t); }
-  template<> inline size_t getElementSize<uint64_t>()
-  { return sizeof(uint64_t); }
-  template<> inline size_t getElementSize<float>()
-  { return sizeof(float); }
-  template<> inline size_t getElementSize<double>()
-  { return sizeof(double); }
-  template<> inline size_t getElementSize<long double>()
-  { return sizeof(long double); }
-  template<> inline size_t getElementSize<std::complex<float> >()
-  { return sizeof(std::complex<float>); }
-  template<> inline size_t getElementSize<std::complex<double> >()
-  { return sizeof(std::complex<double>); }
-  template<> inline size_t getElementSize<std::complex<long double> >()
-  { return sizeof(std::complex<long double>); }
-
-  /**
-   * @brief Returns the type size given the enumeration
-   */
-  size_t getElementSize(ElementType t);
-
-  /**
-   * @brief Gets a string representation of an element type value
-   */
-  const char* stringize(ElementType t);
-
-  /**
-   * @brief Equivalent to call stringize() on the result of
-   * getElementType<T>().
-   */
-  template<typename T> const char* stringize() {
-    return stringize(getElementType<T>());
-  }
-
-  /**
-   * @brief Returns the ElementType given the string representation
-   */
-  ElementType unstringize(const char* name);
-
-}}}}
-
-#endif /* BOB_IO_BASE_ARRAY_TYPE_H */
diff --git a/bob/io/base/include/bob.io.base/array_utils.h b/bob/io/base/include/bob.io.base/array_utils.h
deleted file mode 100644
index 8fdfa77..0000000
--- a/bob/io/base/include/bob.io.base/array_utils.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * @date Tue Nov 8 15:34:31 2011 +0100
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Utilities for converting data to-from blitz::Arrays and other
- * goodies.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_ARRAY_UTILS_H
-#define BOB_IO_BASE_ARRAY_UTILS_H
-
-#include <blitz/array.h>
-#include <stdint.h>
-#include <stdexcept>
-#include <boost/format.hpp>
-
-#include <bob.core/cast.h>
-#include <bob.io.base/array.h>
-
-namespace bob { namespace io { namespace base { namespace array {
-
-  /**
-   * @brief Fills in shape and stride starting from a typeinfo object
-   */
-  template <int N> void set_shape_and_stride(const typeinfo& info,
-      blitz::TinyVector<int,N>& shape, blitz::TinyVector<int,N>& stride) {
-    for (int k=0; k<N; ++k) {
-      shape[k] = info.shape[k];
-      stride[k] = info.stride[k];
-    }
-  }
-
-
-  /**
-   * @brief Takes a data pointer and assumes it is a C-style array for the
-   * defined type. Creates a wrapper as a blitz::Array<T,N> with the same
-   * number of dimensions and type. Notice that the blitz::Array<> created
-   * will have its memory tied to the passed buffer. In other words you have
-   * to make sure that the buffer outlives the returned blitz::Array<>.
-   */
-  template <typename T, int N>
-    blitz::Array<T,N> wrap(const interface& buf) {
-
-      const typeinfo& type = buf.type();
-
-      if (!buf.ptr()) throw std::runtime_error("empty buffer");
-
-      if (type.dtype != bob::io::base::array::getElementType<T>()) {
-        boost::format m("cannot efficiently retrieve blitz::Array<%s,%d> from buffer of type '%s'");
-        m % stringize<T>() % N % type.str();
-        throw std::runtime_error(m.str());
-      }
-
-      if (type.nd != N) {
-        boost::format m("cannot retrieve blitz::Array<%s,%d> from buffer of type '%s'");
-        m % stringize<T>() % N % type.str();
-        throw std::runtime_error(m.str());
-      }
-
-      blitz::TinyVector<int,N> shape;
-      blitz::TinyVector<int,N> stride;
-      set_shape_and_stride(type, shape, stride);
-
-      return blitz::Array<T,N>((T*)buf.ptr(),
-          shape, stride, blitz::neverDeleteData);
-    }
-
-
-  /**
-   * @brief Takes a data pointer and assumes it is a C-style array for the
-   * defined type. Creates a copy as a blitz::Array<T,N> with the same number
-   * of dimensions, but with a type as specified by you. If the type does not
-   * match the type of the original C-style array, a cast will happen.
-   *
-   * If a certain type cast is not supported. An appropriate exception will
-   * be raised.
-   */
-  template <typename T, int N>
-    blitz::Array<T,N> cast(const interface& buf) {
-
-      const typeinfo& type = buf.type();
-
-      if (type.nd != N) {
-        boost::format m("cannot cast blitz::Array<%s,%d> from buffer of type '%s'");
-        m % stringize<T>() % N % type.str();
-        throw std::runtime_error(m.str());
-      }
-
-      switch (type.dtype) {
-        case bob::io::base::array::t_bool:
-          return bob::core::array::cast<T>(wrap<bool,N>(buf));
-        case bob::io::base::array::t_int8:
-          return bob::core::array::cast<T>(wrap<int8_t,N>(buf));
-        case bob::io::base::array::t_int16:
-          return bob::core::array::cast<T>(wrap<int16_t,N>(buf));
-        case bob::io::base::array::t_int32:
-          return bob::core::array::cast<T>(wrap<int32_t,N>(buf));
-        case bob::io::base::array::t_int64:
-          return bob::core::array::cast<T>(wrap<int64_t,N>(buf));
-        case bob::io::base::array::t_uint8:
-          return bob::core::array::cast<T>(wrap<uint8_t,N>(buf));
-        case bob::io::base::array::t_uint16:
-          return bob::core::array::cast<T>(wrap<uint16_t,N>(buf));
-        case bob::io::base::array::t_uint32:
-          return bob::core::array::cast<T>(wrap<uint32_t,N>(buf));
-        case bob::io::base::array::t_uint64:
-          return bob::core::array::cast<T>(wrap<uint64_t,N>(buf));
-        case bob::io::base::array::t_float32:
-          return bob::core::array::cast<T>(wrap<float,N>(buf));
-        case bob::io::base::array::t_float64:
-          return bob::core::array::cast<T>(wrap<double,N>(buf));
-        case bob::io::base::array::t_float128:
-          return bob::core::array::cast<T>(wrap<long double,N>(buf));
-        case bob::io::base::array::t_complex64:
-          return bob::core::array::cast<T>(wrap<std::complex<float>,N>(buf));
-        case bob::io::base::array::t_complex128:
-          return bob::core::array::cast<T>(wrap<std::complex<double>,N>(buf));
-        case bob::io::base::array::t_complex256:
-          return bob::core::array::cast<T>(wrap<std::complex<long double>,N>(buf));
-        default:
-          break;
-      }
-
-      //if we get to this point, there is nothing much we can do...
-      throw std::runtime_error("invalid type on blitz buffer array casting -- debug me");
-
-    }
-
-}}}}
-
-#endif /* BOB_IO_BASE_ARRAY_UTILS_H */
diff --git a/bob/io/base/include/bob.io.base/blitz_array.h b/bob/io/base/include/bob.io.base/blitz_array.h
deleted file mode 100644
index 083ec1d..0000000
--- a/bob/io/base/include/bob.io.base/blitz_array.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/**
- * @date Tue Nov 8 15:34:31 2011 +0100
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief A class that implements the polimorphic behaviour required when
- * reading and writing blitz arrays to disk or memory.
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_BLITZ_ARRAY_H
-#define BOB_IO_BASE_BLITZ_ARRAY_H
-
-#include <stdexcept>
-#include <boost/make_shared.hpp>
-#include <boost/format.hpp>
-#include <blitz/array.h>
-
-#include <bob.core/check.h>
-#include <bob.core/cast.h>
-#include <bob.core/array_copy.h>
-
-#include <bob.io.base/array.h>
-#include <bob.io.base/array_utils.h>
-#include <bob.io.base/array_type.h>
-
-namespace bob { namespace io { namespace base { namespace array {
-
-  /**
-   * @brief A blitz::Array representation of an array.
-   */
-  class blitz_array: public interface {
-
-    public:
-
-      /**
-       * @brief Starts by refering to the data from another blitz array.
-       */
-      blitz_array(boost::shared_ptr<blitz_array> other);
-
-      /**
-       * @brief Starts by copying the data from another blitz array.
-       */
-      blitz_array(const blitz_array& other);
-
-      /**
-       * @brief Starts by refering to the data from another buffer.
-       */
-      blitz_array(boost::shared_ptr<interface> other);
-
-      /**
-       * @brief Starts by copying the data from another buffer.
-       */
-      blitz_array(const interface& other);
-
-      /**
-       * @brief Starts with an uninitialized, pre-allocated array.
-       */
-      blitz_array(const typeinfo& info);
-
-      /**
-       * @brief Borrows the given pointer - if you use this constructor, you
-       * must make sure the pointed data outlives this object.
-       */
-      blitz_array(void* data, const typeinfo& info);
-
-      /**
-       * @brief Destroyes me
-       */
-      virtual ~blitz_array();
-
-      /**
-       * @brief Copies the data from another buffer.
-       */
-      virtual void set(const interface& other);
-
-      /**
-       * @brief Refers to the data of another buffer.
-       */
-      virtual void set(boost::shared_ptr<interface> other);
-
-      /**
-       * @brief Re-allocates this buffer taking into consideration new
-       * requirements. The internal memory should be considered uninitialized.
-       */
-      virtual void set (const typeinfo& req);
-
-      /**
-       * @brief Refers to the data of another blitz array.
-       */
-      void set(boost::shared_ptr<blitz_array> other);
-
-      /**
-       * @brief Element type
-       */
-      virtual const typeinfo& type() const { return m_type; }
-
-      /**
-       * @brief Borrows a reference from the underlying memory. This means
-       * this object continues to be responsible for deleting the memory and
-       * you should make sure that it outlives the usage of the returned
-       * pointer.
-       */
-      virtual void* ptr() { return m_ptr; }
-      virtual const void* ptr() const { return m_ptr; }
-
-      virtual boost::shared_ptr<void> owner() { return m_data; }
-      virtual boost::shared_ptr<const void> owner() const { return m_data; }
-
-
-      /******************************************************************
-       * Blitz Array specific manipulations
-       ******************************************************************/
-
-
-      /**
-       * @brief Starts me with new arbitrary data. Please note we refer to the
-       * given array. External modifications to the array memory will affect
-       * me. If you don't want that to be the case, use the const variant.
-       */
-      template <typename T, int N>
-        blitz_array(boost::shared_ptr<blitz::Array<T,N> > data) {
-          set(data);
-        }
-
-      /**
-       * @brief Starts me with new arbitrary data. Please note we copy the
-       * given array. External modifications to the array memory will not
-       * affect me. If you don't want that to be the case, start with a
-       * non-const reference.
-       */
-      template <typename T, int N>
-        blitz_array(const blitz::Array<T,N>& data) {
-          set(data);
-        }
-
-      /**
-       * @brief Starts me with new arbitrary data. Please note we don't copy
-       * the given array.
-       * @warning Any resize of the given blitz::Array after this call leads to
-       * unexpected results
-       */
-      template <typename T, int N>
-        blitz_array(blitz::Array<T,N>& data) {
-          set(data);
-        }
-
-      /**
-       * @brief This method will set my internal data to the value you
-       * specify. We will do this by referring to the data you gave.
-       */
-      template <typename T, int N>
-        void set(boost::shared_ptr<blitz::Array<T,N> > data) {
-
-          if (getElementType<T>() == t_unknown)
-            throw std::runtime_error("unsupported element type on blitz::Array<>");
-          if (N > BOB_MAX_DIM)
-            throw std::runtime_error("unsupported number of dimensions on blitz::Array<>");
-
-          if (!bob::core::array::isCContiguous(*data.get()))
-            throw std::runtime_error("cannot buffer'ize non-c contiguous array");
-
-          m_type.set(data);
-
-          m_data = data;
-          m_ptr = reinterpret_cast<void*>(data->data());
-          m_is_blitz = true;
-        }
-
-      /**
-       * @brief This method will set my internal data to the value you
-       * specify. We will do this by copying the data you gave.
-       */
-      template <typename T, int N> void set(const blitz::Array<T,N>& data) {
-        set(boost::make_shared<blitz::Array<T,N> >(bob::core::array::ccopy(data)));
-      }
-
-      /**
-       * @brief This method will set my internal data to the value you specify.
-       * We will do this by referencing the data you gave.
-       * @warning Any resize of the given blitz::Array after this call leads to
-       * unexpected results
-       */
-      template <typename T, int N> void set(blitz::Array<T,N>& data) {
-        set(boost::make_shared<blitz::Array<T,N> >(data));
-      }
-
-      /**
-       * @brief This method returns a reference to my internal data. It is the
-       * fastest way to get access to my data because it involves no data
-       * copying. This method has two limitations:
-       *
-       * 1) You need to know the correct type and number of dimensions or I'll
-       * throw an exception.
-       *
-       * 2) If this buffer was started by refering to another buffer's data
-       * which is not a blitz array, an exception will be raised.
-       * Unfortunately, blitz::Array<>'s do not offer a management mechanism
-       * for tracking external data allocation. The exception can be avoided
-       * and the referencing mechanism forced if you set the flag "temporary"
-       * to "true". In this mode, this method will always suceed, but the
-       * object returned will have its lifetime associated to this buffer. In
-       * other words, you should make sure this buffer outlives the returned
-       * blitz::Array<T,N>.
-       */
-      template <typename T, int N> blitz::Array<T,N> get(bool temporary=false) {
-
-        if (m_is_blitz) {
-
-          if (!m_data) throw std::runtime_error("empty blitz array");
-
-          if (m_type.dtype != getElementType<T>()) {
-            boost::format m("cannot efficiently retrieve blitz::Array<%s,%d> from buffer of type '%s'");
-            m % stringize<T>() % N % m_type.str();
-            throw std::runtime_error(m.str());
-          }
-
-          if (m_type.nd != N) {
-            boost::format m("cannot retrieve blitz::Array<%s,%d> from buffer of type '%s'");
-            m % stringize<T>() % N % m_type.str();
-            throw std::runtime_error(m.str());
-          }
-
-          return *boost::static_pointer_cast<blitz::Array<T,N> >(m_data).get();
-        }
-
-        else {
-
-          if (temporary) { //returns a temporary reference
-            return bob::io::base::array::wrap<T,N>(*this);
-          }
-
-          else {
-            throw std::runtime_error("cannot get() external non-temporary non-blitz array buffer -- for a temporary object, set temporary=true; if you need the returned object to outlive this buffer; use copy() or cast()");
-          }
-        }
-
-      }
-
-      /**
-       * @brief This method returns a copy to my internal data (not a
-       * reference) in the type you wish. It is the easiest method to use
-       * because I'll never throw, no matter which type you want to receive
-       * data at. Only get the number of dimensions right!
-       */
-      template <typename T, int N> blitz::Array<T,N> cast() const {
-        return bob::io::base::array::cast<T,N>(*this);
-      }
-
-    private: //representation
-
-      typeinfo m_type; ///< type information
-      void* m_ptr; ///< pointer to the data
-      bool m_is_blitz; ///< true if initiated with a blitz::Array<>
-      boost::shared_ptr<void> m_data; ///< Pointer to the data owner
-
-  };
-
-}}}}
-
-#endif /* BOB_IO_BASE_BLITZ_ARRAY_H */
diff --git a/bob/io/base/include/bob.io.base/config.h b/bob/io/base/include/bob.io.base/config.h
deleted file mode 100644
index cc07a9a..0000000
--- a/bob/io/base/include/bob.io.base/config.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Fri  1 Nov 07:10:59 2013
- *
- * @brief General directives for all modules in bob.io
- */
-
-#ifndef BOB_IO_BASE_CONFIG_H
-#define BOB_IO_BASE_CONFIG_H
-
-/* Macros that define versions and important names */
-#define BOB_IO_BASE_API_VERSION 0x0201
-
-
-#ifdef BOB_IMPORT_VERSION
-
-  /***************************************
-  * Here we define some functions that should be used to build version dictionaries in the version.cpp file
-  * There will be a compiler warning, when these functions are not used, so use them!
-  ***************************************/
-
-  #include <Python.h>
-  #include <boost/preprocessor/stringize.hpp>
-  #include <hdf5.h>
-
-  /**
-  * The version of HDF5
-  */
-  static PyObject* hdf5_version() {
-    boost::format f("%s.%s.%s");
-    f % BOOST_PP_STRINGIZE(H5_VERS_MAJOR);
-    f % BOOST_PP_STRINGIZE(H5_VERS_MINOR);
-    f % BOOST_PP_STRINGIZE(H5_VERS_RELEASE);
-    return Py_BuildValue("s", f.str().c_str());
-  }
-
-  /**
-   * bob.io.base c/c++ api version
-   */
-  static PyObject* bob_io_base_version() {
-    return Py_BuildValue("{ss}", "api", BOOST_PP_STRINGIZE(BOB_IO_BASE_API_VERSION));
-  }
-
-#endif // BOB_IMPORT_VERSION
-
-
-#endif /* BOB_IO_BASE_CONFIG_H */
diff --git a/bob/io/base/include/bob.io.base/reorder.h b/bob/io/base/include/bob.io.base/reorder.h
deleted file mode 100644
index 09ebf50..0000000
--- a/bob/io/base/include/bob.io.base/reorder.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * @date Tue Nov 22 11:24:44 2011 +0100
- * @author Andre Anjos <andre.anjos@idiap.ch>
- *
- * @brief Row-major to column-major reordering and vice-versa
- *
- * Copyright (C) Idiap Research Institute, Martigny, Switzerland
- */
-
-#ifndef BOB_IO_BASE_REORDER_H
-#define BOB_IO_BASE_REORDER_H
-
-#include <stdint.h>
-
-#include <bob.io.base/array.h>
-
-namespace bob { namespace io { namespace base {
-
-  /**
-   * Returns, on the first argument, the linear indexes by calculating the
-   * linear positions relative to both row-major and column-major order
-   * matrixes given a certain index accessing a position in the matrix and the
-   * matrix shape
-   *
-   * @param row The resulting row-major linear index.
-   *            (row,col) is a 2-tuple with the results: row-major and
-   *            column-major linear indexes
-   * @param col The resulting column-major linear index. (see above)
-   * @param i   Index of the column.
-   *            (i,j) a 2-tuple with the indexes as would be accessed
-   *            [col][row]; this is the same as accessing the matrix like
-   *            on directions [y][x]
-   * @param j   Index of the row. (see above)
-   * @param shape a 2-tuple with the matrix shape like [col][row]; this is the
-   *        same as thinking about the extends of the matrix like on directions
-   *        [y][x]
-   *
-   * Detailed arithmetics with graphics and explanations can be found here:
-   * http://webster.cs.ucr.edu/AoA/Windows/HTML/Arraysa2.html
-   */
-  void rc2d(size_t& row, size_t& col, const size_t i, const size_t j,
-      const size_t* shape);
-
-  /**
-   * Same as above, but for a 3D array organized as [depth][column][row]
-   */
-  void rc3d(size_t& row, size_t& col, const size_t i, const size_t j,
-      const size_t k, const size_t* shape);
-
-  /**
-   * Same as above, but for a 4D array organized as [time][depth][column][row]
-   */
-  void rc4d(size_t& row, size_t& col, const size_t i, const size_t j,
-      const size_t k, const size_t l, const size_t* shape);
-
-  /**
-   * Converts the data from row-major order (C-Style) to column major order
-   * (Fortran style). Input parameters are the src data in row-major order, the
-   * destination (pre-allocated) array of the same size and the type
-   * information.
-   */
-  void row_to_col_order(const void* src_, void* dst_, const
-      bob::io::base::array::typeinfo& info);
-
-  /**
-   * Converts the data from column-major order (Fortran-Style) to row major
-   * order (C style), which is required by bob. Input parameters are the src
-   * data in column-major order, the destination (pre-allocated) array of the
-   * same size and the type information.
-   */
-  void col_to_row_order(const void* src_, void* dst_,
-      const bob::io::base::array::typeinfo& info);
-
-  /**
-   * Converts the data from row-major order (C-Style) to column major order
-   * (Fortran style). Input parameters are the src data in row-major order, the
-   * destination (pre-allocated) array of the same size and the type
-   * information.
-   */
-  void row_to_col_order_complex(const void* src_, void* dst_re_,
-      void* dst_im_, const bob::io::base::array::typeinfo& info);
-
-  /**
-   * Converts the data from column-major order (Fortran-Style) to row major
-   * order (C style), which is required by bob. Input parameters are the src
-   * data in column-major order, the destination (pre-allocated) array of the
-   * same size and the type information.
-   */
-  void col_to_row_order_complex(const void* src_re_, const void* src_im_,
-      void* dst_, const bob::io::base::array::typeinfo& info);
-
-}}}
-
-#endif /* BOB_IO_BASE_REORDER_H */
diff --git a/bob/io/base/include/bob.io.base/utils.h b/bob/io/base/include/bob.io.base/utils.h
deleted file mode 100644
index c42b1fa..0000000
--- a/bob/io/base/include/bob.io.base/utils.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Wed  3 Oct 07:46:49 2012
- *
- * @brief Utilities for easy manipulation of filed data.
- */
-
-#ifndef BOB_IO_BASE_BASE_UTILS_H
-#define BOB_IO_BASE_BASE_UTILS_H
-
-#include <boost/shared_ptr.hpp>
-
-#include <bob.io.base/File.h>
-
-namespace bob { namespace io { namespace base {
-
-  /**
-   * Creates a new array codec using the filename extension to determine which
-   * codec to use. The opening mode is passed to the underlying registered File
-   * implementation.
-   *
-   * Here are the meanings of the mode flag:
-   *
-   * 'r': opens for reading only - no modifications can occur; it is an
-   *      error to open a file that does not exist for read-only operations.
-   * 'w': opens for reading and writing, but truncates the file if it
-   *      exists; it is not an error to open files that do not exist with
-   *      this flag.
-   * 'a': opens for reading and writing - any type of modification can
-   *      occur. If the file does not exist, this flag is effectively like
-   *      'w'.
-   */
-  boost::shared_ptr<File> open (const char* filename, char mode);
-
-  /**
-   * Opens the file pretending it has a different extension (that is, using a
-   * different codec) then the one expected (if any). This allows you to write
-   * a file with the extension you want, but still using one of the available
-   * codecs.
-   */
-  boost::shared_ptr<File> open (const char* filename, char mode,
-      const char* pretend_extension);
-
-  /**
-   * Peeks the file and returns the typeinfo for reading individual frames (or
-   * samples) from the file.
-   *
-   * This method is equivalent to calling open() with 'r' as mode flag and then
-   * calling type() on the returned bob::io::base::File object.
-   */
-  bob::io::base::array::typeinfo peek (const char* filename);
-
-  /**
-   * Peeks the file and returns the typeinfo for reading the whole contents in
-   * a single shot.
-   *
-   * This method is equivalent to calling open() with 'r' as mode flag and then
-   * calling type_all() on the returned bob::io::base::File object.
-   */
-  bob::io::base::array::typeinfo peek_all (const char* filename);
-
-  /**
-   * Opens for reading and load all contents
-   *
-   * This method is equivalent to calling open() with 'r' as mode flag and then
-   * calling read_all() on the returned bob::io::base::File object.
-   */
-  template <typename T, int N> blitz::Array<T,N> load (const char* filename) {
-    return open(filename, 'r')->read_all<T,N>();
-  }
-
-  /**
-   * Opens for reading and load a particular frame (or sample)
-   *
-   * This method is equivalent to calling open() with 'r' as mode flag and then
-   * calling read(index) on the returned bob::io::base::File object.
-   */
-  template <typename T, int N> blitz::Array<T,N> load (const char* filename, size_t index) {
-    return open(filename, 'r')->read<T,N>(index);
-  }
-
-  /**
-   * Opens for appending and add an array to it
-   *
-   * This method is equivalent to calling open() with 'a' as mode flag and then
-   * calling append(data) on the returned bob::io::base::File object.
-   */
-  template <typename T, int N> void append (const char* filename, const blitz::Array<T,N>& data) {
-    open(filename, 'a')->append(data);
-  }
-
-  /**
-   * Opens for writing and write an array to it. If the file exists before the
-   * call to this method, it is truncated.
-   *
-   * This method is equivalent to calling open() with 'w' as mode flag and then
-   * calling write(data) on the returned bob::io::base::File object.
-   */
-  template <typename T, int N> void save (const char* filename, const blitz::Array<T,N>& data) {
-    open(filename, 'w')->write(data);
-  }
-
-}}}
-
-#endif /* BOB_IO_BASE_BASE_UTILS_H */
diff --git a/bob/io/base/main.cpp b/bob/io/base/main.cpp
deleted file mode 100644
index 01a82d9..0000000
--- a/bob/io/base/main.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Fri 25 Oct 16:54:55 2013
- *
- * @brief Bindings to bob::io
- */
-
-#define BOB_IO_BASE_MODULE
-#include <bob.io.base/api.h>
-
-#ifdef NO_IMPORT_ARRAY
-#undef NO_IMPORT_ARRAY
-#endif
-#include <bob.blitz/capi.h>
-#include <bob.blitz/cleanup.h>
-#include <bob.extension/documentation.h>
-
-extern bool init_File(PyObject* module);
-extern bool init_HDF5File(PyObject* module);
-
-/**
- * Creates an str object, from a C or C++ string. Returns a **new
- * reference**.
- */
-static PyObject* make_object(const char* s) {
-  return Py_BuildValue("s", s);
-}
-
-static auto s_extensions = bob::extension::FunctionDoc(
-  "extensions",
-  "Returns a dictionary containing all extensions and descriptions currently stored on the global codec registry",
-  "The extensions are returned as a dictionary from the filename extension to a description of the data format."
-)
-.add_prototype("", "extensions")
-.add_return("extensions", "{str : str}", "A dictionary of supported extensions");
-static PyObject* PyBobIo_Extensions(PyObject*) {
-BOB_TRY
-  typedef std::map<std::string, std::string> map_type;
-  const map_type& table = bob::io::base::CodecRegistry::getExtensions();
-
-  PyObject* retval = PyDict_New();
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  for (auto it=table.begin(); it!=table.end(); ++it) {
-    PyObject* pyvalue = make_object(it->second.c_str());
-    if (!pyvalue) return 0;
-    auto p_ = make_safe(pyvalue);
-    if (PyDict_SetItemString(retval, it->first.c_str(), pyvalue) != 0) {
-      return 0;
-    }
-  }
-
-  return Py_BuildValue("O", retval);
-BOB_CATCH_FUNCTION("extensions", 0);
-}
-
-static PyMethodDef module_methods[] = {
-    {
-      s_extensions.name(),
-      (PyCFunction)PyBobIo_Extensions,
-      METH_NOARGS,
-      s_extensions.doc(),
-    },
-    {0}  /* Sentinel */
-};
-
-PyDoc_STRVAR(module_docstr, "Core bob::io classes and methods");
-
-int PyBobIo_APIVersion = BOB_IO_BASE_API_VERSION;
-
-#if PY_VERSION_HEX >= 0x03000000
-static PyModuleDef module_definition = {
-  PyModuleDef_HEAD_INIT,
-  BOB_EXT_MODULE_NAME,
-  module_docstr,
-  -1,
-  module_methods,
-  0, 0, 0, 0
-};
-#endif
-
-static PyObject* create_module (void) {
-
-# if PY_VERSION_HEX >= 0x03000000
-  PyObject* m = PyModule_Create(&module_definition);
-  auto m_ = make_xsafe(m);
-  const char* ret = "O";
-# else
-  PyObject* m = Py_InitModule3(BOB_EXT_MODULE_NAME, module_methods, module_docstr);
-  const char* ret = "N";
-# endif
-  if (!m) return 0;
-
-  /* register some constants */
-  if (!init_File(m)) return 0;
-  if (!init_HDF5File(m)) return 0;
-
-  static void* PyBobIo_API[PyBobIo_API_pointers];
-
-  /* exhaustive list of C APIs */
-
-  /**************
-   * Versioning *
-   **************/
-
-  PyBobIo_API[PyBobIo_APIVersion_NUM] = (void *)&PyBobIo_APIVersion;
-
-  /**********************************
-   * Bindings for bob.io.base.File *
-   **********************************/
-
-  PyBobIo_API[PyBobIoFile_Type_NUM] = (void *)&PyBobIoFile_Type;
-
-  PyBobIo_API[PyBobIoFileIterator_Type_NUM] = (void *)&PyBobIoFileIterator_Type;
-
-  /************************
-   * I/O generic bindings *
-   ************************/
-
-  PyBobIo_API[PyBobIo_AsTypenum_NUM] = (void *)PyBobIo_AsTypenum;
-
-  PyBobIo_API[PyBobIo_TypeInfoAsTuple_NUM] = (void *)PyBobIo_TypeInfoAsTuple;
-
-  PyBobIo_API[PyBobIo_FilenameConverter_NUM] = (void *)PyBobIo_FilenameConverter;
-
-  /*****************
-   * HDF5 bindings *
-   *****************/
-
-  PyBobIo_API[PyBobIoHDF5File_Type_NUM] = (void *)&PyBobIoHDF5File_Type;
-
-  PyBobIo_API[PyBobIoHDF5File_Check_NUM] = (void *)&PyBobIoHDF5File_Check;
-
-  PyBobIo_API[PyBobIoHDF5File_Converter_NUM] = (void *)&PyBobIoHDF5File_Converter;
-
-/*****************************************
- * Code Registration and De-registration *
- *****************************************/
-
-  PyBobIo_API[PyBobIoCodec_Register_NUM] = (void *)&PyBobIoCodec_Register;
-
-  PyBobIo_API[PyBobIoCodec_Deregister_NUM] = (void *)&PyBobIoCodec_Deregister;
-
-  PyBobIo_API[PyBobIoCodec_IsRegistered_NUM] = (void *)&PyBobIoCodec_IsRegistered;
-
-  PyBobIo_API[PyBobIoCodec_GetDescription_NUM] = (void *)&PyBobIoCodec_GetDescription;
-
-#if PY_VERSION_HEX >= 0x02070000
-
-  /* defines the PyCapsule */
-
-  PyObject* c_api_object = PyCapsule_New((void *)PyBobIo_API,
-      BOB_EXT_MODULE_PREFIX "." BOB_EXT_MODULE_NAME "._C_API", 0);
-
-#else
-
-  PyObject* c_api_object = PyCObject_FromVoidPtr((void *)PyBobIo_API, 0);
-
-#endif
-
-  if (!c_api_object) return 0;
-
-  if (PyModule_AddObject(m, "_C_API", c_api_object) < 0) return 0;
-
-  /* imports dependencies */
-  if (import_bob_blitz() < 0) return 0;
-
-  return Py_BuildValue(ret, m);
-}
-
-PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) {
-# if PY_VERSION_HEX >= 0x03000000
-  return
-# endif
-    create_module();
-}
diff --git a/bob/io/base/test.cpp b/bob/io/base/test.cpp
deleted file mode 100644
index 559535a..0000000
--- a/bob/io/base/test.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * @author Manuel Gunther
- * @date Tue Sep 13 13:01:31 MDT 2016
- *
- * @brief Tests for bob::io::base
- */
-
-#include <bob.io.base/api.h>
-#include <bob.blitz/cleanup.h>
-#include <bob.extension/documentation.h>
-
-#include <boost/format.hpp>
-#include <boost/filesystem.hpp>
-
-static auto s_test_api = bob::extension::FunctionDoc(
-  "_test_api",
-  "Some tests for API functions"
-)
-.add_prototype("tempdir")
-.add_parameter("tempdir", "str", "A temporary directory to write data to")
-;
-static PyObject* _test_api(PyObject*, PyObject *args, PyObject* kwds){
-BOB_TRY
-  static char** kwlist = s_test_api.kwlist();
-
-  const char* tempdir;
-  if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &tempdir)) return 0;
-
-  blitz::Array<uint8_t, 1> test_data(5);
-  for (int i = 0; i < 5; ++i){
-    test_data(i) = i+1;
-  }
-
-  auto h5file = bob::io::base::CodecRegistry::instance()->findByExtension(".hdf5");
-
-  boost::filesystem::path hdf5(tempdir); hdf5 /= std::string("test.h5");
-
-  auto output = h5file(hdf5.string().c_str(), 'w');
-  output->write(test_data);
-  output.reset();
-
-  auto input = h5file(hdf5.string().c_str(), 'r');
-  blitz::Array<uint8_t,1> read_data(input->read<uint8_t,1>(0));
-
-  // Does not compile at the moment
-  blitz::Array<uint16_t,1> read_data_2(input->cast<uint16_t,1>(0));
-
-  input.reset();
-
-  if (blitz::any(test_data - read_data))
-    throw std::runtime_error("The HDF5 IO test did not succeed");
-
-  if (blitz::any(test_data - read_data_2))
-    throw std::runtime_error("The HDF5 IO test did not succeed");
-
-  Py_RETURN_NONE;
-BOB_CATCH_FUNCTION("_test_api", 0)
-}
-
-static PyMethodDef module_methods[] = {
-  {
-    s_test_api.name(),
-    (PyCFunction)_test_api,
-    METH_VARARGS|METH_KEYWORDS,
-    s_test_api.doc(),
-  },
-  {0}  /* Sentinel */
-};
-
-PyDoc_STRVAR(module_docstr, "Tests for bob::io::base");
-
-#if PY_VERSION_HEX >= 0x03000000
-static PyModuleDef module_definition = {
-  PyModuleDef_HEAD_INIT,
-  BOB_EXT_MODULE_NAME,
-  module_docstr,
-  -1,
-  module_methods,
-  0, 0, 0, 0
-};
-#endif
-
-static PyObject* create_module (void) {
-
-# if PY_VERSION_HEX >= 0x03000000
-  PyObject* m = PyModule_Create(&module_definition);
-  auto m_ = make_xsafe(m);
-  const char* ret = "O";
-# else
-  PyObject* m = Py_InitModule3(BOB_EXT_MODULE_NAME, module_methods, module_docstr);
-  const char* ret = "N";
-# endif
-  if (!m) return 0;
-
-  return Py_BuildValue(ret, m);
-}
-
-PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) {
-# if PY_VERSION_HEX >= 0x03000000
-  return
-# endif
-    create_module();
-}
diff --git a/bob/io/base/test/__init__.py b/bob/io/base/test/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/bob/io/base/test/data/cmyk.jpg b/bob/io/base/test/data/cmyk.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3ed9423c9e19ec5e61298dc7dfb963e31f02a5b4
GIT binary patch
literal 255
zcmex=<NpH&0WUXCHwH#VMg|WC4+e(+?-=+TQ}UBi8B!QP;Qws~X9i{_5CD<P%*@Oz
zY%Cza!N$hQ#>v6O#mT|R$;HFZ!^O?V&B@6t$jiqsARs8f#UmsvBp}Q$ARzGn0D}kz
z0~-Sii?bkuuOLIDAcMCc!~Y`;q700TAX^ZaljHvp23Y|HCMG6kBq?SVRyGDkCU#+=
z|F;<USezMr86p|H85rytLOuo`_1BH^vCk6p4EXZ))XIpZisp*qg2D-F4NXE#X8zPV
eaQ%t+<V&kECm23h_xI1yj~^WSCtMEye-i*QQa0@X

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/grace_hopper.png b/bob/io/base/test/data/grace_hopper.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a63320ab28dc6812e5eb89b1d7d50af0dbb0dcc
GIT binary patch
literal 628280
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

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/img_gray_alpha.png b/bob/io/base/test/data/img_gray_alpha.png
new file mode 100644
index 0000000000000000000000000000000000000000..7643ce025d21ec8385a93836180167d3ce62167e
GIT binary patch
literal 644
zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU=ZVAVPIh34hTEXz`($g?&#~tz_78O`%fY(
z0|NtNage(c!@6@aFF~r4J%W507^>757#dm_7=AG@Ff_biU???UV0e|lz+g3lfkC`r
z&aOZk1_lPEByV>YhX3vTXZABNFmM)lL>4nJa0`PlBg3pY5)2HCwVp1HAr_~nhS+*D
zI||h9><H^>?Twfrahc`XhKm1(oYv^9`ODuF{wzL1(@ZRo<uBtm_U?5{0+N+FH53me
z9?<7VFU%>+E1!J%WnS5{z2^Df)x?h%w8-Dsx#8KWGcy@hO*Li^FydBYT`;SD-|}=J
z4z2??A3R=|+0?`EN8uq$!|BhxzGv5eHsRYA%ush=<^(UZ^jVS5GdWh4RCrnCUR-l{
z;o1kg9NE9c^l`6z@Tv0lsjSwjXNgHJf0yj7o1#`xEjx3^zV-aK%%iO{&2-~W+}wHf
z=@I^@$w2`T#-b}KTc6~7kmGIm_3)_VS`W<&Yr2{@*KIM#|8;@KdtWdkYhd`TmkbA9
zZnUe;oLXZ$hxtI=zPHblLhE(KR+=a0Hy#q1_D0cN?#RZ!d@sCZ#65i@K5ydMEb{Ep
zjk@msq}KneDr+XrfB9eP#QBu<o$LLl=guiScJs3C+X6k2b5h@@ZkiCen}K1OPhj1J
z*G-|P7%sd%#2`@g$m{aP>ZG)HQQ_6=PQ{B}U)aA!W{EQc1A}UbYeY#(Vo9o1a#3nx
zNh*VpfuWhMfw``cS%{&5m8pr9p`osUnU#UTPIuiV6b-rgDVb@NxHX)Rnrg?uz`)??
L>gTe~DWM4ffBO3!

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/img_indexed_color.png b/bob/io/base/test/data/img_indexed_color.png
new file mode 100644
index 0000000000000000000000000000000000000000..c21427b328350a26155841013e461fa46e406be5
GIT binary patch
literal 1087
zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU=ZVAW?*2L)}B|!z`)E9;1lBN=;rC{<>T%b
z=ouUl8X4{B>*pPv5)qf^o0#L5UJ{sH8J(JynweEvS)Er<n4T16<Ko#<lRd2|dv;6i
zw1)I4ZAEk13+Hr}OzEzf(^ogIzixJK&D4&v`4j4UTB{az7A@*7S=w8+q`PEUU**ES
z>XrSKYx*lz^p-B3P`7GA_1a0bYbMofoKm--JwK$ZBeZsMd0kUP^Q_92j;QXXanrWM
zOkA5Zdsq78)wzrJr7b&Izy3)5hU0acPStKXm$~jz?v`6M+b-5@zf!&9TGg&wm3!`0
z@4i#9?@`76Cxv^T73_GBH2*;PfoJ81UX~qxQ+niG@xj+shhLQ*{ZMx7W99LWbtgYo
zpZM6--9DwSX;yzj@1&lo6I*9bXqq*tb?(IGsZ)DqPU)I8wR`T2zV6v`dZ$g9JZ;j{
znNudunLT^<^u7t53nw)$o7%c$a`Vb*ZEL1Bt)1DqdS=(M8J(M^HEx~Wv~_0d&RMN{
zX18ve*Sl#>_wIRJ%jZtov!HMD{0Vy&P1?R>`pQMKy5=pKG=D+w!liAC*K{vg-L_!)
zq=idnEM3vMY;)(bjjb!Tb*<deyn0X9nq5=YZd<Wp`Hmgiw{BQ9d*Qr;^EwYN>^-@p
z|H#tGr<P4Rw{q&K71PeFo^^EPtc$CrU0yT&+S*x{*3Q1Me)g@6bMI`Le{I9O`&$;?
z*}UlbmZc}Ru6ek1(WC84o@`(GZ0E8^JC;A)wescem9O@!db4-+yZvil?Opp~*YX$p
zH+(#>{?nliUk-2lc4YJSqg%cn-TLXswl@bipFF&$aoxe@^@p1`9BtZsx@+^X=ABok
zZ9l$v|JltaE;gP1)OzMq``J$|XFheE``mN>bKix}Q!js+bm_~CD_>?^{W|a3*O^zo
zbRU1d=*HJ&x4x~t`+e1&Zwsz}-FW}|_8Tv@Km4)l(T}~4f9!qoWB-#MTONF$eE8;x
z6UT2{zkcE3g+ot&9)14v*o&X1Uj91w`q$}apD(`ob@}b@Ywvzvc=PMV``@=-f4=we
z&#e!?FFk(!;`#H3pZ`4g^ykT!zpuaj`Tzg_zkmP!{{8#w*RQW%zrB0+{^q^=--_nw
zGB7Z37I;J!Gca%qgD@k*tT_@43=Hfgp1!W^cRBdDI8}mro!>GrFkJF<aSYKoUpvW`
z?~nmcYc2mWuQ{!~3&kCDVit-gG&V9DEZ{O!P?M0jcWUFVi@&bgt2Rv6sGJ`^=f)-1
zD{?ObHgPRTP<is$A>im`LDsgA1b1c^i2&!bGkX=Txcn)5rXQQP@H$6!`}Ot>7ozMN
z!}o_Qt_x_W%&wMSs_pkoL#-$Kbdmhm8f(@!`~}~$(pU|YB3{<{-)4BTxNvrbU&Ee=
zCKvw2fiIW*=KipF&We36bFQ8LP-ZMv7#{ziO?V<3Te`^Q3GVA8=UuH(@1FVQaIyZ&
b54>~Yo7R+El;UJyU|{fc^>bP0l+XkKAtibj

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/img_indexed_color_alpha.png b/bob/io/base/test/data/img_indexed_color_alpha.png
new file mode 100644
index 0000000000000000000000000000000000000000..defabb829d44bcd28b8939afbc64c1b3f9143342
GIT binary patch
literal 574
zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU=ZVAW?*2L)}B|!z`($g?&#~tz_78O`%fY(
z0|NtNage(c!@6@aFF~r4J%W507^>757#dm_7=AG@Ff_biU???UV0e|lz+g3lfkC`r
z&aOZk1_p+}0G|-o(xV@~AKh|h^{kHv)^{%3Sa$f$jrFs;HXmEsTQ+6wwpmlVA8uWA
zZSAag``0e)tL|R1`pw?evwLf%PVH%3vF*wBr4{=gO`SRA&Zha>=Jnp+vhe@^{}&YI
zcQG(9NR<Tn1($w5^Rct+M%U6QvmRc1x3K%o?5V9!DyH7qcE7Im+Y*r5lf2zsq)OAD
z7%?y~a29w(7Bet#3xhBt!>l<H3=9lgJzX3_G|txsy_9M;;83=nV|~~5`EUCdS}Pmg
zZu|3aG7E>8q)bxB$rDT~Odfqn3Yl>9l8V%^poF7r1wKrTX6dFe3w@6)+gz7h!Yr%&
zh3_+a{=zu#gKDj2pQA+uc4yiLRm&VYc2oM|g?E8|b43z3&pmq<#JPzj{O`WX=<tjk
z=c}g~+vIjnvr9kMzMtuzM(~#V6?WJBZxjpj&!5U;S1I@~;e%5t@5d*<3fJC?+qCN>
z%j(+pC+t@70&AQXIyW;gFsPQeMwFx^mZVxG7o{eaq%s&87@FxCnClvug%}!GnVMJ`
q8tNLDSs57Ybk}V{(U6;;l9^VCTf+&dsdfwu3=E#GelF{r5}E+@1mwX0

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/img_rgba_color.png b/bob/io/base/test/data/img_rgba_color.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e6d2a10a91f3c36cb64f94ca00e6b971109f259
GIT binary patch
literal 761
zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU=ZVAV_;xd7&*^{fq{V~-O<;Pfnj4m_n$;o
z1_lPk;vjb?hIQv;UV>C7dj$D1FjT2AFf_C<F#KX*U}$*3z))(y!0;-8fx&791A}<M
zoLzx73=9lxN#5=*4F5rJ!QSPQ85kHi3p^r=85p>QL70(Y)*J~22F7=uE{-7{$Jd70
zdK`9;sLhnsYSNuHZI#EX1rM$TI*G9_Z(8hU^-^u_mdPn6mRWSpUeO)Q&VDd*g2d}<
zjz{J@x?Win67Bfvzh!L3x!tETYXv;s?XG!W`@SgNPq{@vL+SmsDbI8z0<TWF(8RJ~
ziJ8p%drddD%$U%#V`9ylWea?=4j;Vpo6p>T0dwW{XR9YAz5FC>X?tevJoEULj)|hy
z4kvGF>CQOuGBLtn@9K#$M@46~mmU^&VBV9m#c5m6+t<z~8&B_!zF)k!L%>=g_<Wc0
zLb3Q57TcRYlY5G|?43ka<oar!%sv{M$yjysui?70??QLp-mrd4)5kLnTa4y?74z{4
z-#($I^ueB*=6fO2uP82LPM^8bf&IqTtqF(PnxEd_c$L3C!oPP>!G`{)pLZFwUto+|
znj>l^W3&ItMX}7Uoevi7-_ddTpkyh#i_;B13wg<J^R9axzw<pQe4YC_z1fo(rq;$)
zu6n3se6lyRnn&;Fdf5q`o!d`W?^_X`(IT+u5_{d{k0GCRBrZPtbs+wLnBXF>CWUOH
zdd8<;{_=+M%lvnJXL*48gFs#Fq+`<dCc9E|Ej;A&I4oP#mF{`I*j3d3uHsPi@w9V{
zG3*iMD{d{E9LnHOZu9Wy%NaakJ}y0LCd9mA;Madw_F&GZWY(8&S~eNqpC)<v{Gzr^
zMhpxLswJ)wB`Jv|saDBFsfi`23`Pcqrn&}}x&{^@29{Qa=2j+Vx&~%e1_nCkAD>0h
dkei>9nO2EgL+qsJLIwr~22WQ%mvv4FO#nH}I(Ps8

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/img_trns.png b/bob/io/base/test/data/img_trns.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c16aab16960149a4762610eb8c6827c0814600d
GIT binary patch
literal 360
zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU=ZVAW?*2L)}B|!z`($g?&#~tz_78O`%fY(
z0|NtNage(c!@6@aFBupZ0t0+PTuYCB_;_IbolWyA_C30>e)iJdvZ*ttd_TJ7|NsBn
z=Jnp+vhd0FrSJByy|#ANtf}1#`>JR6)=XKut#!q=?j@@qZe8?d@9L>jd%89sD?9w=
z%<5U4%QhNpD|KaHVA$&E;uxZFzBcHkRI>p`@@&0br|(|>ZT~`RWy9NTe;!U|;ShT%
zlhkqY1k(zWM_;l-CLBGaB6Te2!CAHfAErjLbkmrHzDJgA{+C(8EUWy5?=yS;!Z`1P
z%B^Of)kOu`Gwp-I-yA-6Q~KhCcYbZ%A_<&%&z?naZel6_YgZi|o^j(`^)zFf-0o?1
z>F0LuXZoiRyybp{-8KIk#lqV2r}C_;6nvPl!KIY<<C9;7YwyKv+I5m;_1%^y>^`@-
Wyc%--r5G3(7(8A5T-G@yGywpGTc+>;

literal 0
HcmV?d00001

diff --git a/bob/io/base/data/matlab_1d.hdf5 b/bob/io/base/test/data/matlab_1d.hdf5
similarity index 100%
rename from bob/io/base/data/matlab_1d.hdf5
rename to bob/io/base/test/data/matlab_1d.hdf5
diff --git a/bob/io/base/data/matlab_2d.hdf5 b/bob/io/base/test/data/matlab_2d.hdf5
similarity index 100%
rename from bob/io/base/data/matlab_2d.hdf5
rename to bob/io/base/test/data/matlab_2d.hdf5
diff --git a/bob/io/base/test/data/test.gif b/bob/io/base/test/data/test.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8c770fb7b60d43b03b89dc695425e811339963b3
GIT binary patch
literal 151
zcmZ?wbhEHbWMN=q_`<{>Bqa3r@8AD0z`(!&V}fX`+<*W6!Nm;?4I$bYZ~(=hEMOTO
h5DBuAfmK97fP*<uf_;((_hk!y5l`XJ$Z!q@YXG#XKHLBR

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/test.jpg b/bob/io/base/test/data/test.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0bf2deb6a8f29793c1ae15a880aef370c43d01fc
GIT binary patch
literal 216
zcmex=<NpH&0WUXCHwH#VMg|WC4+e(+w;7xnn3+HTL^3loGqbR<fB**@8!H<p2NxG7
z2PY>N4?hnVHy<}AC$AtcAHRTrpa2(-kg$+|Fu#C+!2bgb+#C#S3@nU{f(-wUFo-ZP
zGN1yE|3?^P1Q?i@m>H3zm|0la7@36Gh5p}S-~dV3Gvov=w2f?4ZGRkYH8*Zj%bk`G
o7vHumXD)^uO1~Lq5}#l*Pc)dPv5)Kde#4p?f#e&RtN-5w00)UG;s5{u

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/test.pbm b/bob/io/base/test/data/test.pbm
new file mode 100644
index 0000000..0902b22
--- /dev/null
+++ b/bob/io/base/test/data/test.pbm
@@ -0,0 +1,3 @@
+P4
+4 6
+�@  @
\ No newline at end of file
diff --git a/bob/io/base/test/data/test.pgm b/bob/io/base/test/data/test.pgm
new file mode 100644
index 0000000000000000000000000000000000000000..32cd7fae38dc8850cb7ce244908ba749eb364327
GIT binary patch
literal 35
jcmWGA<uXw)<1#We<r4b)|Nno6{|MqA!~g$=fBypj7~m83

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/test.ppm b/bob/io/base/test/data/test.ppm
new file mode 100644
index 0000000000000000000000000000000000000000..a5baf843114a68f76cdc36e96658bfbcd782b3eb
GIT binary patch
literal 83
tcmWGA<1$e&<1#We<q{GS`uq3qe;8n3V1O|}G*<4vfB)d(hK7a^?Ep$YI8Oio

literal 0
HcmV?d00001

diff --git a/bob/io/base/data/test1.hdf5 b/bob/io/base/test/data/test1.hdf5
similarity index 100%
rename from bob/io/base/data/test1.hdf5
rename to bob/io/base/test/data/test1.hdf5
diff --git a/bob/io/base/data/test7_unlimited.hdf5 b/bob/io/base/test/data/test7_unlimited.hdf5
similarity index 100%
rename from bob/io/base/data/test7_unlimited.hdf5
rename to bob/io/base/test/data/test7_unlimited.hdf5
diff --git a/bob/io/base/test/data/test_2.pgm b/bob/io/base/test/data/test_2.pgm
new file mode 100644
index 0000000000000000000000000000000000000000..863c6e80fd1144a2612fd5cd1044476c21f096d1
GIT binary patch
literal 61
rcmWGA<uXw)<1#ZfH8$lE68ii1KNv7DfT{og|D&@0{e$og4M8da@faqK

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/test_2.ppm b/bob/io/base/test/data/test_2.ppm
new file mode 100644
index 0000000000000000000000000000000000000000..a285afec5845554bfff4f6845393cccccbff4b46
GIT binary patch
literal 157
zcmWGA<1$e&<1#ZfH8$lE0)xL`@E-#(fB}XuQ~)f=0Oep%$g=;y09gd0+z<@Fmj8u_
F000hOZ$AJ4

literal 0
HcmV?d00001

diff --git a/bob/io/base/data/test_array_codec.txt b/bob/io/base/test/data/test_array_codec.txt
similarity index 100%
rename from bob/io/base/data/test_array_codec.txt
rename to bob/io/base/test/data/test_array_codec.txt
diff --git a/bob/io/base/test/data/test_corrupted.pbm b/bob/io/base/test/data/test_corrupted.pbm
new file mode 100644
index 0000000..5d28f04
--- /dev/null
+++ b/bob/io/base/test/data/test_corrupted.pbm
@@ -0,0 +1,3 @@
+P4
+4 6
+�@  @a
diff --git a/bob/io/base/test/data/test_corrupted.pgm b/bob/io/base/test/data/test_corrupted.pgm
new file mode 100644
index 0000000000000000000000000000000000000000..8f34579e2f6c6710677b5689d15099638912a948
GIT binary patch
literal 37
lcmWGA<uXw)<1#We<r4b)|Nno6{|MqA!~g$=fBz?P0RTam6kz}W

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/test_corrupted.ppm b/bob/io/base/test/data/test_corrupted.ppm
new file mode 100644
index 0000000000000000000000000000000000000000..fa528857de00ad3392bee8a35be1e94e06ffa500
GIT binary patch
literal 85
vcmWGA<1$e&<1#We<q{GS`uq3qe;8n3V1O|}G*<4vfB)d(hK7a^?TK6fyQw(3

literal 0
HcmV?d00001

diff --git a/bob/io/base/test/data/test_spaces.pgm b/bob/io/base/test/data/test_spaces.pgm
new file mode 100644
index 0000000..e1d116b
--- /dev/null
+++ b/bob/io/base/test/data/test_spaces.pgm
@@ -0,0 +1,6 @@
+P5
+# CREATOR: GIMP PNM Filter Version 1.1
+
+100 100
+255
+[\[YXY\[^^]`]aaa`d_`ba_b`aad`ddage��jhilpkjsuqnkqquypmstqrk{wrtxuxttvvww{{zxz{{w{|}}���~��������XYYYZ[^_]\_[\^^]\baabb^bbfg`aggiii}��ooitt}�x~tq|xq�lpozupt�stzuu{uywxzyzxz}zz{{zz�}�|~����������X\Z]_[][\^__^^_`__a]f_ca_``\bee`dhw�ypp~�k��op��zw~wpu|�}vvwvwwvx|wy{{}y}|z~}}�}��~}�����~�����YZ[[\]][\]]\_]^```bc`_acbaaccbadwr{x��rx~|uy��~�|z���yqs|ux�}{yyy~vuxux{wy}zz{z{}}�}~�������������WZ\\[[Z_aZ^]^_a^]]_``a_cbccdcbfn`mvw|ggdgo{y�ot�������uw{v����{~x�v{yxzy}x||{{z}~�~~|���~��������Z]]X^`^\^]`_``a_`a_^cbbbbhaeabhlninoTAE>;_]lok^gtm����y����������vwzywxyz{zxwy~{|}y}�~�����������_[[[]]\```]]`a_]cbaa_`ccabdfbhlvxuqUA:9/36=CMRX_|wo~����^`�su{w���~�zzxz{|y{{||}}~~|��~����������XZ[\_]]``a[]_^\__`Zdaa__eddbdabfxv\;6@ADB:2<D@J\d�~�no�p}���������}�}}}xyyxz|��{}{|~~��������������^\[Y\\Z\\^^^`^^^^^b^baacccegbfqil[D;EA:S@PLNMOakXlrxlmvtlQa��zy��������Ëzyxy|z{{|�|~��|}}������X\\][^]]Z^]\``_`_aab`abbcaefdheqYSE:NF28:;:GIKLGlfY`lo]MM>eoexi�����������~y{||{~{||�}����~��������]`]Z\\`^^^]b_^a`aa]b`aaab`bccem^FJL?K4:QPdA;E[J@UJKWNehN]\Vgkns����ڲ�����z|{}z~||}}~��~��������YY^]^]\a`^_a^````^d_acbbfabdbfcYZ;9MKEPXu~f?]?YQl^G^>4>LK>QWSfjlz�����������zzz|~�|�|}���}��������\][][\\a\_`\^[a^_b`b^bdabbg`gbWRHE<>RQ_rr��rB<PfTQcNE=8=7:?SCPkbki���ǫ������z|}}{~{�~~����~�����]]^\[_^\_Z]_adac]`bc_c`hfbefgdROI;A7NN\hs���UK_UIKc@640-060<Vethgg{���ǻ����{xx}z�|z~��~}���|���[\\]]\Z^_^_^__a`\aa``^d`ddfggUAFZLI57LALkz{q^XhlbD:D7/5(3)-?<>YDa_qw������ȼ��y|{|~�||���~���~���\Y[\[Y`c_]\\_b^^]a``cccdgebg_I?CTZJG87B=Ubig^U\GO^P525F)/9::1B?^VhHgz������ҝ�~}{{{||�~�������Z\\\^b^\]a`b`da_a^_`bbebcbda^n_LMRLC<2+<MPXIDL@L`XV..8+0+I1"!9E33nuNWt�����ͷ��}z}{��|~}��}�������`\_^_\^]\Zcb`__`]`[j\bbadbg^VPZWHA<F;;/8>M@H;=BGF&6<>4**>(%35,87U�\SRf����ɹ����zz~}�~���~�������[\ZaaZ^a^c^cdc`b_bbedecdee`IJ@CC@FNE?94*%7D4;59B4.+$2 %2?,.86239=6EZhk����΢�|��}}~}}�|����������^\\a\[`^][b__bad[ad``geedgZFLNID@:?27601 09/NENCUWA=;(%%&8)6+),:0.?\DSfr���л����|{|{|~|�~�������]WZ]b`]]aa_ba`c_cbbdb_edf`IRHXD878.14($&0$./LIYOPVk_?/ 3C/"0/:<94Yea`ax����Ǒ����{}}z�}~{�}~~���][[Z^]]]]^_b\c_aa_d^_cffgUPPT=3/85-'#40)46411YVi^j{�s+(,334(252::Db�vp|~����ؙ��ë�~���{|����������]]\]^^`_ab`^`]`c__eebbdg`VHK323812/&%*975.+309AFVTX;=P05+'8-618CNCx~a������ù�����͇��|}~�����z����\[`_`_Y[Z\_a\`_a^cbjdf`cGLF@/129*10-**,363CG+/;177+"12%91%*99407kuf~�w~sw���������֣�����}}|~�����\^\]\^__b`__```dac`eadcRILB87398:*$/&(,1+/;5."2;/$%#5)-->( 306<6W�ivIRWjwl{�������׺�����}�~�~����\]]]]]_]`^b`_b_a]bc_c\PHCE:;.3,=4)/.,&!(5=BL4)+'0%$#+,.5@(8/75KGM�~aX\oY_JSl�������Ѷ���~}�|��~����Y\]_`^a[^a^\c^]c`afc_VHGH@A843=:,0*+&,.0&?J7;7)+.*,#/+3><66177?V^�t@Ll�JRIX`x�¦}��ͣ����|��~��~����\\Z[]a_[^]cb`abdaace`ME2E<?5<<;6:/2/*1440::G;7+$)3*)*+=580F:;ATV�]]g=<UBDDG^~������Ʈ�Ț�}~�~���~~�]]^]``]^]`ca^b]ab_d^ZQ0-B57/<0A?==9@F88;@?;/(.+710/1-4@9;HC?EDUR_hh@18AJGXZpq���������Ӗ���~���}����\_\_][^\a\[acb_bccaaP2&0=55C5<>9<I<.4;H:25,&&14,172.0J437%8?LU_MYyV5;7@XbL[viy�������������}������\`]^b^]_aa^_a^abdb_\V8:7101@35G:P>*:A=40.9%./<95750-9DAN4/<>0LeVCPS`P,J`lnqSTw���Ȥ���������{}}~~^]^_a]]cbb__]\^^`aa[QN9>&&,0,3IHL:/%-159345;5>B773.6IC4<=O246+_jFQPQfKZx�sjj�������������|�~~~��`]`bc]\^b`bbab^bea`VHH/1H%4,09?C<.2-26<8;""<GX>@;7<M?8>F78A>4:h?DMVNI^����n��������������~~~|�~~�[]^`a]^`aaa`bb_bb[ZKEK@+A61'*HFI2)7HE@>:,/*4DF:A=<7;K:DXhM?<<<3=B4?HRLRf}~�zx�������Ŵ��}{}~z}�|��~]\Z]aab``d_aa`]b^QM>=TG-@>/&4IBZ28;;FQ:'202HH>CIIB>7F@>DZtsaDK7_kC<D<TQ`kx�����������ʓ����}|�����\Y[^]`^`\_^bbb`a[C>F3O>7=92<7CKN7=;F?:=?:JF=FGCMNG?7L9FBRUmpry~�etfGJKs������d�������С��}z}�}|��|��^^^__b`]a_bdbceb`O@7.H;;@6;@G>PN-*+/8+$ -4DNQWSQLKD9M4EKTUYjrx�roo��_UU~�x�ci���s����հ�~}�~}}~��~[^]^`[[aacbc`bcbcO@4?;81=>,6O=JH6*-)4#'1FP\^caWSLRH9B4R_[W^[]}�|�ny��IYpw��r]t`~����ظ�}}~{{}}~�]a_^a_a```_^c_bf`AAK246$=4'.S>EI5-4+8-9GUiqmkgZWTPU?EJXZ_f_YHSGPl���lDg|��~ajvTi����ʢ�~~�||�~{�`^````b^_bdbb`bh`OMN263)0/''B24@D.-26@LZanqprkYVUW_HIRXQiaefWHNOihl���R]���suiJG\����ƚ��z�|}|}|��`^a^a^cb_]`c\_cfTVYT:@5%(6+340IN23;:GWahrovqo^S_]dNAJ]dijkkcL_S_\CYv��m���xaf7Sg����Н|���|x�z|{�}][`^]^c__aaccbbeNWV;[M5%$(0052?R67GCDQ\lqqosq\Y\ccSNGUfbowocRN[eGY|��}����xR[<.mk��ӵ�|�}}}|zy|�]a^_`]_^_c`cccdcH\RI=;4'+)-%:,78>=KUKNbioos|sfg[ec^cQTWncmzYjpinXX����~n�ukYEO+wo���Λ}�}�~�}}z�~`a`\a]c_`__aae`YMRE;=7?2-!,4:,&4JTJRTRVlvzw{ymkadoi_dY]asugTc_qkqI\�|VVt�v`B:F:^s���¦���~~~�~~�}�_aa_d__]_dbd`ceY@>D8:==10/%17% :9OTSVgkqy{y��qs�w\t`pq`\ZQVQkebjx�hNTZhpsGF79AT@u��ѱ�x|x|�||}��``_^dbf^aaibdca^6@?9QC"\tE 1;ELS_ijplry��xz�}uhcw�yJY_RVTss����eU{qtS?88GTE_��ѧ�}}y�|||}}||}]^_]b]_]^_b^cbejG9=@7!%
)ZbiN?6&<?FFMhwvro~|}������y|���|_Qpslop�����ǖP:;9UbJS~�գ�zz|y|}~|~z}`^_^^``_`caaQPZVL52/$!,!#GOxsm`^P4?JRUQScvtyxz�������y�|��zW_u��ĸ����ۮ�\-:PMHXbo�ڕy~{yz}}|~~z~^a`a_aacbbbefQ:31--&))4' >qcJZdUJW^J^ic_[TR_kf}��������pon^K[b���̾�����ǔjQB4;\cWa�ԓ�|{{{}{{}z{~|}```_]`ffbbccefUB7-/8B>1%<�|iw{���~nZy�}zhjc`_o�}�������ysmz��l|�������ȸ�\:70:QaQW�ɓy{{||{}{{z}|}`]_^^aanle``]_d]OFWKI;!"$V�vWh���~|�x~}}ylnnpucv���������tmhgcvxp�������ɫmQK/;QfSi���|yz|||y}{|}||^]\_a`]adeeeebac]_YZJ(7X��b�������~������{}�wm~������sl����������������ƑYT.DKiL���~z{yyxz~}y|}]^_^_`aaabb]bbc`d_`K1(@Y��w��������������uhivru�����n����������������߽�woF6BNc^t��x�v{yyy{{}}{y}\\\aaaa_]ab`da`dcabK* .>d��v�}~�ztlnhkfZgnlZPuvy���s�������������������~��D8GM_i���|�uxzzxzz~xwxv[_]_^^_\^b``cbaa`b^?0@Ak��w�xvfn���y{usiSWMPlynq�����wfbdo{�������������9@AQic���|xz{u{wzzu{z{}x][\b__^_^]a_cbddfcb;&<L8k��s�{zx[Tml[XVONEU]Y`dw������xils{�����������ȍ��1F@Ws|w��xwyy{uu{{~xxys|^]^]aa]`]a^\dddecdi63JiBg��y����heQ<6;HIKPUhh}po���Ǔzd^RG=HWl���������r�8OIm}�~�yyxxvww~yuxxxzxx`[___b^a_cab``abddn@(<^n6^��{������wWPX^X]dagdrFn���Н�xfelmsx�����������]�^LU�����suvwuuxvz{x{wyvy\][[Z\_]_`^^_d^c`acK6CPc?n��~���������{�~{qio��N_����ž�~����������������U��Tl�����xvwvuvutwtwtzywy]\\\\_`[^^\``^`d`bkV=7NAAr��������������������wBx�����߾����������������ƽ[��S����~zwytvxwxvwywyxxvv`]^]^[^^^^_`ac^b^biMB??23�}��z����������������J[����Ǭ��IJ��������������ӥt��V��ij�zuvuvwuzxqrwvwvx{_]_[__`_^[_b__abbbi`LBA:.tv������������������jMs����ֶ���Ƽ�������������ےl�zX��Ӯ�|vusuxzwyyyswyuwx[]]]]_^_c``^a^_`bdagI>BH4hb�����������������{Jq�����������̸�������������}m��S�ͥ��twuwvuuwvtyyuwvuw[[[\^Z[_aa_ba^a_bd_deJHV7i������������������Vh��������������������������xpz�S��Ů�}vwwtsvwsvtwuuvwy[\[_]^_^a^_^`^`c`bdccWPJ=jav���|uz��������w`ey�������������ʽ����������宀u��Z��ͣ�~uxwuutuusvtutzuwY]^\_^][aab`eac`[_debh\K7Tmw����|oqnqvspi__oz{��������������Ƚ���������띆���^�����}wqrwxvsrruvxxwxuZ[_Z]][\\]]^^]`\cbachd`Z=KZs����~wxohvtrtx�|rms�������|���������������㪜���_�����yxqutsorrsrrtptvr\^[[ZZb]]^^`_bab^_]`ad_^MNGE��������������yWfq��������|q|�ɾ�����������ʳŴ���{}yrusrossssruusouwvxXXX]]^]``\^^bc`_bb_`bab^XA@=���������������qIr}��������n���������������ɯ��f��|rnrnonlrnsosqtrvpsvuZUa^[Y`_]]_]c\bacb_cc`ba_-83��������������~dQ{����������f|�������������俼��P�twqsrnpnmqorutrrqquvyu_][][W^_\^[b_a^][_`]bb_\Y,B/q������{������~bR����������ht�������������𖕭m�trmlorvponoonsntorsvsqtYZ]]Y\[]\\a__]^[`^daac_SI,F?U�������������wk]nkjv����ߣ��~��������������hm�|}pqonopmqprsqprptpqrsqqnYY\[_]]^\^]\_[^`a[^__b__UZ0\6������~�}���}zt[YHhouÝ}�����������������a�W��oppnnmlnoquoqqprssqsqtx]\\_^Y_\^[\a\^a`]^___^`_ag)`4�����|}����~yvsbb_m����������������������hgowrklmootornpopqpnotsqpsqrX]Z\\][[\X\\^_]\_a_a]d_`bbEWIs������z����{|w{v|��Ǿ������������������Srmmnlollnomprspnqrurqrqrso\Y[\YZ\Z^\]]\^]__^[[[ac``]_.[C�����|zx��������������ʿ����������������~ZtknkmllnolqmppqronsrqppoppuVX\Y[[UV\_\^b[]\^a^]_^``abd6^T������uy}����������������®�������������ljnmllmqnnomlnpmnomqprtqpporp]Y[[Y[^][[Y][]_Y[\]]^^^_\\`\&gl�����~xux~��~������������װ�������������MomkhmljpnnoloonnpopqmnpnqmomXWWZW[Z\_Y\][`YZ\[]c]^^_c^cbL8������yvy{�}�������������ο�֤��������Grlimjkjhihljjlllnooppqopmmpos[YXWX\X[ZZ\\\[\\\]]]\``__c_bd(l�������~������������������¶�������l\qkehigkkjklinlmmpoompplpnspmV[W[XYZ[\][[X]X]]Z]Z^]^]c_cb$��������~~t�s][_o����������̥���������Dk�rhkhkhkmjnlmommromnolminqsuX[YXYY\Y\\[^\[]W^][a\\_`cbS&"a�������|om[UN:))<HE@,3Ks������������Z<��hlffijhmijknnlhkknplmlkmmnmZZW\Y\[W\YX[^]`[^]a^]`c]cB$!)��������mkhNOLB-'.)1>Q���Ө���������R5u�VYspiiikhlllklmklknlllkkknmYW[`Z[YVX^\^ZX\Z]ZZZ][[eA!"#
"2d����}yojlpfj[GMJDBBt���Ϯ�������� X]rNPa7_mpmjfhomplpnlhkkmlillkV[WXXZ]_[V[[[YZ^Y]\\__a=$#  !3R{�}yxzumnppnkmdiejfd�����ë�������6inWeATgNBCOkjljjiknkojoonqmmkkoVXZZYWXTY[YZ\]^[Z\Z[bK,.<Wm}zwvwvswsmbhbjsvlgz�į���Ϫ�����+)Mg_>OYgFG?GdomjhjkimkhqllgmlolXZZWWV]ZXZ\ZZZ[[\aa`6(!"+;Sdouxstqnyxonhjmo�����������չ����F**J\2MXgOHADCMgmjikjjllmkmkjmmmWXW\XYZZYZ\\Z[\\[^G' "/:Qaqqnrtxw|zvsniiqs}~�������������B'%-JT2AZZEJIBC>>HcijijhiigjkjlmjYWZV[ZZWZ[YX[\Z^T4!):VZgrkiov}���}zokms~������������ϑ; (Ea/=NSL?BDC?A?DRdkmhmokkkkjilWYVWYZWYWXZY\`Z=&!+;:[]ormgou�}���}{w~����������������</I]1@FER9=FA>:@B@JYljeikkkjhjiUWV]XZZ\ZYZ\_E'!!-=6TXlkmunqy~��y�z}��������������y5! *>^7<?7N79=?>>;;;>BPjrmjiihkkjXWUW]XZZXX`B*""(:5MZgimoktqz��������������������ۙd) !+C_6::7I16898:73:8;BHexrllnhieXVSZX[Y_YE' %#&2:LSbehoojmwx|�w����������������χQ! #,JT4645C-2857316/273<IcoipphjfWVXW[^]@.& 
 3G>W]addhmkjru{{{��������������xP&"&.PV0730<+334210//03377?Xz`OdkkTWYXY4**!7C<QXfe``gihokosv{rqx�����ҷ���שcE.LT1.3.6.12//.+0.,.2/69;QgsdZkVY\>,.#  7D=LU[kb[hgcmncimpkho|vp�ɫ���޸�N>%#2XT,,,42,*/-(+,,),/-3128>PWhyaXT4(#!2ABMRTcd_[_hfommjd_]gt��满���ƠiA4"(6ZJ0*(-0+,(,0&)/))+*+++68?IUftP.*!  
4AF>YR]fjcb_dkqt�~zux���ޭ���Ӯ�U<)!&7\D0),/0.*+')*+%+(()(')/08=KXd+"  !(AG;JTYfmlfc_am~�xmry}��ү��κ��O9';Y<+(/070*+%')++)%'(((**05=AKZ"# !>DF@TY^gnmhjefjxww{}���������tK<  ,?O6)$+..1'')*&)'(''&'$'&,/9;AK
diff --git a/bob/io/base/test/test_hdf5.py b/bob/io/base/test/test_hdf5.py
new file mode 100644
index 0000000..437709f
--- /dev/null
+++ b/bob/io/base/test/test_hdf5.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Tiago de Freitas Pereira <tiago.pereira@idiap.ch>
+#
+# Copyright (C) 2011-2014 Idiap Research Institute, Martigny, Switzerland
+
+"""Tests for the base HDF5 infrastructure
+"""
+
+import os
+from bob.io.base import load, save
+from .test_utils import temporary_filename
+
+
+import numpy as np
+import random
+
+
+def read_write_check(data):
+    """Testing loading and save different file types"""
+
+    tmpname = temporary_filename()
+
+    try:
+
+        save(data, tmpname)
+        data2 = load(tmpname)
+    finally:
+        os.unlink(tmpname)
+
+    assert np.allclose(data, data2, atol=10e-5, rtol=10e-5)
+
+
+def test_type_support():
+
+    # This test will go through all supported types for reading/writing data
+    # from to HDF5 files. One single file will hold all data for this test.
+    # This is also supported with HDF5: multiple variables in a single file.
+
+    N = 100
+
+    data = [int(random.uniform(0, 100)) for z in range(N)]
+
+    read_write_check(np.array(data, np.int8))
+    read_write_check(np.array(data, np.uint8))
+    read_write_check(np.array(data, np.int16))
+    read_write_check(np.array(data, np.uint16))
+    read_write_check(np.array(data, np.int32))
+    read_write_check(np.array(data, np.uint32))
+    read_write_check(np.array(data, np.int64))
+    read_write_check(np.array(data, np.uint64))
+    read_write_check(np.array(data, np.float32))
+    read_write_check(np.array(data, np.float64))
+    read_write_check(np.array(data, np.complex64))
+    read_write_check(np.array(data, np.complex128))
diff --git a/bob/io/base/test/test_image_support.py b/bob/io/base/test/test_image_support.py
new file mode 100644
index 0000000..4371699
--- /dev/null
+++ b/bob/io/base/test/test_image_support.py
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Laurent El Shafey <laurent.el-shafey@idiap.ch>
+# Wed Aug 14 12:27:57 CEST 2013
+#
+# Copyright (C) 2011-2014 Idiap Research Institute, Martigny, Switzerland
+
+"""Runs some image tests
+"""
+
+import os
+import numpy
+
+from bob.io.base import load, write
+from .test_utils import datafile, temporary_filename
+
+# import bob.io.image
+import nose
+
+
+# These are some global parameters for the test.
+PNG_INDEXED_COLOR = datafile("img_indexed_color.png", __name__)
+PNG_INDEXED_COLOR_ALPHA = datafile("img_indexed_color_alpha.png", __name__)
+PNG_RGBA_COLOR = datafile("img_rgba_color.png", __name__)
+PNG_GRAY_ALPHA = datafile("img_gray_alpha.png", __name__)
+PNG_tRNS = datafile("img_trns.png", __name__)
+
+
+def test_png_indexed_color():
+    # Read an indexed color PNG image, and compared with hardcoded values
+
+    img = load(PNG_INDEXED_COLOR)
+    assert img.shape == (3, 22, 32)
+    assert img[0, 0, 0] == 255
+    assert img[0, 17, 17] == 117
+
+
+def test_png_rgba_color():
+    # Read an indexed color PNG image, and compared with hardcoded values
+    img = load(PNG_RGBA_COLOR)
+    assert img.shape == (3, 22, 32)
+    assert img[0, 0, 0] == 255
+    assert img[0, 17, 17] == 117
+
+
+def test_png_indexed_color_alpha():
+    # Read an indexed color+alpha PNG image, and compared with hardcoded values
+    img = load(PNG_INDEXED_COLOR_ALPHA)
+    assert img.shape == (3, 22, 32)
+    assert img[0, 0, 0] == 255
+    assert img[0, 17, 17] == 117
+
+
+def test_png_indexed_trns():
+    # Read an tRNS PNG image (without alpha), and compared with hardcoded values
+    img = load(PNG_tRNS)
+    assert img.shape == (3, 22, 32)
+    assert img[0, 0, 0] == 255
+    assert img[0, 17, 17] == 117
+
+
+def test_png_gray_alpha():
+    # Read a gray+alpha PNG image, and compared with hardcoded values
+
+    img = load(PNG_GRAY_ALPHA)
+
+    assert img.shape == (22, 32)
+    assert img[0, 0] == 255
+    assert img[17, 17] == 51
+
+
+def transcode(filename):
+
+    tmpname = temporary_filename(suffix=os.path.splitext(filename)[1])
+    tmpnam_ = temporary_filename(suffix=os.path.splitext(filename)[1])
+
+    try:
+        # complete transcoding test
+        image = load(filename)
+
+        # save with the same extension
+        write(image, tmpname)
+
+        # reload the image from the file
+        image2 = load(tmpname)
+
+        assert numpy.array_equal(image, image2)
+
+        # test getting part of the image as well
+        if len(image.shape) == 3:
+            subsample = image[:, ::2, ::2]
+        else:
+            subsample = image[::2, ::2]
+
+        assert not subsample.flags.contiguous
+        write(subsample, tmpnam_)
+        image3 = load(tmpnam_)
+        assert numpy.array_equal(subsample, image3)
+
+    finally:
+        if os.path.exists(tmpname):
+            os.unlink(tmpname)
+        if os.path.exists(tmpnam_):
+            os.unlink(tmpnam_)
+
+
+def test_netpbm():
+
+    transcode(datafile("test.pbm", __name__))  # indexed, works fine
+    transcode(datafile("test.pgm", __name__))  # indexed, works fine
+    transcode(datafile("test.ppm", __name__))  # indexed, works fine
+    transcode(datafile("test_2.pgm", __name__))  # indexed, works fine
+    # transcode(datafile("test_2.ppm", __name__))  # indexed, works fine ----> THIS DOES NOT WORK
+    transcode(datafile("test_spaces.pgm", __name__))  # indexed, works fine
+
+    # transcode(datafile("test.jpg", __name__))  # does not work
+    # because of re-compression
+
+
+def notest_gif():
+    transcode(datafile("test.gif", __name__))
+
+
+def test_image_load():
+    # test that the generic bob.io.image.load function works as expected
+    for filename in (
+        "test.jpg",
+        "cmyk.jpg",
+        "test.pbm",
+        "test_corrupted.pbm",
+        "test.pgm",
+        "test_corrupted.pgm",
+        "test.ppm",
+        "test_corrupted.ppm",
+        "test.gif",
+    ):
+
+        full_file = datafile(filename, __name__)
+
+        # load with just image name
+        i1 = load(full_file)
+
+        assert i1.shape == (6, 4)
+
+    # Loading the last pgm file
+    full_file = datafile("test_spaces.pgm", __name__)
+    load(full_file).shape == (100, 100)
+
+    # Testing exception
+    nose.tools.assert_raises(
+        RuntimeError, lambda x: load(os.path.splitext(x)[0] + ".unknown"), full_file
+    )
diff --git a/bob/io/base/test/test_io.py b/bob/io/base/test/test_io.py
new file mode 100644
index 0000000..7a31cda
--- /dev/null
+++ b/bob/io/base/test/test_io.py
@@ -0,0 +1,96 @@
+import nose
+import numpy as np
+import os
+from bob.io.base import vstack_features, save, load
+from .test_utils import temporary_filename
+
+
+def test_io_vstack():
+
+    paths = [1, 2, 3, 4, 5]
+
+    def oracle(reader, paths):
+        return np.vstack([reader(p) for p in paths])
+
+    def reader_same_size_C(path):
+        return np.arange(10).reshape(5, 2)
+
+    def reader_different_size_C(path):
+        return np.arange(2 * path).reshape(path, 2)
+
+    def reader_same_size_F(path):
+        return np.asfortranarray(np.arange(10).reshape(5, 2))
+
+    def reader_different_size_F(path):
+        return np.asfortranarray(np.arange(2 * path).reshape(path, 2))
+
+    def reader_same_size_C2(path):
+        return np.arange(30).reshape(5, 2, 3)
+
+    def reader_different_size_C2(path):
+        return np.arange(6 * path).reshape(path, 2, 3)
+
+    def reader_same_size_F2(path):
+        return np.asfortranarray(np.arange(30).reshape(5, 2, 3))
+
+    def reader_different_size_F2(path):
+        return np.asfortranarray(np.arange(6 * path).reshape(path, 2, 3))
+
+    def reader_wrong_size(path):
+        return np.arange(2 * path).reshape(2, path)
+
+    # when same_size is False
+    for reader in [
+        reader_different_size_C,
+        reader_different_size_F,
+        reader_same_size_C,
+        reader_same_size_F,
+        reader_different_size_C2,
+        reader_different_size_F2,
+        reader_same_size_C2,
+        reader_same_size_F2,
+    ]:
+        np.all(vstack_features(reader, paths) == oracle(reader, paths))
+
+    # when same_size is True
+    for reader in [
+        reader_same_size_C,
+        reader_same_size_F,
+        reader_same_size_C2,
+        reader_same_size_F2,
+    ]:
+        np.all(vstack_features(reader, paths, True) == oracle(reader, paths))
+
+    with nose.tools.assert_raises(AssertionError):
+        vstack_features(reader_wrong_size, paths)
+
+    # test actual files
+    paths = [temporary_filename(), temporary_filename(), temporary_filename()]
+    try:
+        # try different readers:
+        for reader in [
+            reader_different_size_C,
+            reader_different_size_F,
+            reader_same_size_C,
+            reader_same_size_F,
+            reader_different_size_C2,
+            reader_different_size_F2,
+            reader_same_size_C2,
+            reader_same_size_F2,
+        ]:
+            # save some data in files
+            for i, path in enumerate(paths):
+                save(reader(i + 1), path)
+            # test when all data is present
+            reference = oracle(load, paths)
+            np.all(vstack_features(load, paths) == reference)
+            os.remove(paths[0])
+            # Check if RuntimeError is raised when one of the files is missing
+            with nose.tools.assert_raises(RuntimeError):
+                vstack_features(load, paths)
+    finally:
+        try:
+            for path in paths:
+                os.remove(path)
+        except Exception:
+            pass
diff --git a/bob/io/base/test_utils.py b/bob/io/base/test/test_utils.py
similarity index 100%
rename from bob/io/base/test_utils.py
rename to bob/io/base/test/test_utils.py
diff --git a/bob/io/base/test_cpp.py b/bob/io/base/test_cpp.py
deleted file mode 100644
index a9f4e06..0000000
--- a/bob/io/base/test_cpp.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from bob.io.base._test import _test_api
-
-import tempfile
-import shutil
-
-def test_api():
-  temp_dir = tempfile.mkdtemp()
-  try:
-    _test_api(temp_dir)
-  finally:
-    shutil.rmtree(temp_dir)
diff --git a/bob/io/base/test_file.py b/bob/io/base/test_file.py
deleted file mode 100644
index 12b2485..0000000
--- a/bob/io/base/test_file.py
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/env python
-# vim: set fileencoding=utf-8 :
-# Andre Anjos <andre.anjos@idiap.ch>
-# Wed Nov 16 13:27:15 2011 +0100
-#
-# Copyright (C) 2011-2013 Idiap Research Institute, Martigny, Switzerland
-
-"""A combined test for all built-in types of Array/interaction in
-python.
-"""
-
-import os
-import sys
-import numpy
-import nose.tools
-
-from . import load, write, peek, peek_all, File, test_utils
-
-def test_peek():
-
-  f = test_utils.datafile('test1.hdf5', __name__)
-  assert peek(f) == (numpy.uint16, (3,), (1,))
-  assert peek_all(f) == (numpy.uint16, (3,3), (3,1))
-
-def test_iteration():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-  nose.tools.eq_(len(f), 512)
-
-  objs = load(fname)
-
-  for l, i in zip(objs, f):
-    assert numpy.allclose(l, i)
-
-def test_indexing():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-  nose.tools.eq_(len(f), 512)
-
-  objs = load(fname)
-  nose.tools.eq_(len(f), len(objs))
-
-  # simple indexing
-  assert numpy.allclose(f[0], objs[0])
-  assert numpy.allclose(f[1], objs[1])
-  assert numpy.allclose(f[-1], objs[-1])
-  assert numpy.allclose(f[-2], objs[-2])
-
-def test_slicing_empty():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-
-  objs = f[1:1]
-  assert objs.shape == tuple()
-
-def test_slicing_0():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-
-  objs = f[:]
-  for i, k in enumerate(load(fname)):
-    assert numpy.allclose(k, objs[i])
-
-def test_slicing_1():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-
-  # get slice
-  s1 = f[3:10:2]
-  nose.tools.eq_(len(s1), 4)
-  assert numpy.allclose(s1[0], f[3])
-  assert numpy.allclose(s1[1], f[5])
-  assert numpy.allclose(s1[2], f[7])
-  assert numpy.allclose(s1[3], f[9])
-
-def test_slicing_2():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-
-  # get negative slicing
-  s = f[-10:-2:3]
-  nose.tools.eq_(len(s), 3)
-  assert numpy.allclose(s[0], f[len(f)-10])
-  assert numpy.allclose(s[1], f[len(f)-7])
-  assert numpy.allclose(s[2], f[len(f)-4])
-
-def test_slicing_3():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-
-  # get negative stepping slice
-  s = f[20:10:-3]
-  nose.tools.eq_(len(s), 4)
-  assert numpy.allclose(s[0], f[20])
-  assert numpy.allclose(s[1], f[17])
-  assert numpy.allclose(s[2], f[14])
-  assert numpy.allclose(s[3], f[11])
-
-def test_slicing_4():
-
-  fname = test_utils.datafile('matlab_2d.hdf5', __name__)
-  f = File(fname, 'r')
-
-  # get all negative slice
-  s = f[-10:-20:-3]
-  nose.tools.eq_(len(s), 4)
-  assert numpy.allclose(s[0], f[len(f)-10])
-  assert numpy.allclose(s[1], f[len(f)-13])
-  assert numpy.allclose(s[2], f[len(f)-16])
-  assert numpy.allclose(s[3], f[len(f)-19])
-
-@nose.tools.raises(TypeError)
-def test_indexing_type_check():
-
-  f = File(test_utils.datafile('matlab_2d.hdf5', __name__), 'r')
-  nose.tools.eq_(len(f), 512)
-  f[4.5]
-
-@nose.tools.raises(IndexError)
-def test_indexing_boundaries():
-
-  f = File(test_utils.datafile('matlab_2d.hdf5', __name__), 'r')
-  nose.tools.eq_(len(f), 512)
-  f[512]
-
-@nose.tools.raises(IndexError)
-def test_indexing_negative_boundaries():
-  f = File(test_utils.datafile('matlab_2d.hdf5', __name__), 'r')
-  nose.tools.eq_(len(f), 512)
-  f[-513]
-
-def transcode(filename):
-  """Runs a complete transcoding test, to and from the binary format."""
-
-  tmpname = test_utils.temporary_filename(suffix=os.path.splitext(filename)[1])
-
-  try:
-    # transcode from test format into the test format -- test array access modes
-    orig_data = load(filename)
-    write(orig_data, tmpname)
-    rewritten_data = load(tmpname)
-
-    assert numpy.array_equal(orig_data, rewritten_data)
-
-    # transcode to test format -- test arrayset access modes
-    trans_file = File(tmpname, 'w')
-    index = [slice(orig_data.shape[k]) for k in range(len(orig_data.shape))]
-    for k in range(orig_data.shape[0]):
-      index[0] = k
-      trans_file.append(orig_data[index]) #slice from first dimension
-    del trans_file
-
-    rewritten_file = File(tmpname, 'r')
-
-    for k in range(orig_data.shape[0]):
-      rewritten_data = rewritten_file.read(k)
-      index[0] = k
-      assert numpy.array_equal(orig_data[index], rewritten_data)
-
-  finally:
-    # And we erase both files after this
-    if os.path.exists(tmpname): os.unlink(tmpname)
-
-def array_readwrite(extension, arr, close=False):
-  """Runs a read/write verify step using the given numpy data"""
-  tmpname = test_utils.temporary_filename(suffix=extension)
-  try:
-    write(arr, tmpname)
-    reloaded = load(tmpname)
-    if close: assert numpy.allclose(arr, reloaded)
-    else: assert numpy.array_equal(arr, reloaded)
-  finally:
-    if os.path.exists(tmpname): os.unlink(tmpname)
-
-def arrayset_readwrite(extension, arrays, close=False):
-  """Runs a read/write verify step using the given numpy data"""
-  tmpname = test_utils.temporary_filename(suffix=extension)
-  try:
-    f = File(tmpname, 'w')
-    for k in arrays:
-      f.append(k)
-    del f
-    f = File(tmpname, 'r')
-    for k, array in enumerate(arrays):
-      reloaded = f.read(k) #read the contents
-      if close:
-        assert numpy.allclose(array, reloaded)
-      else: assert numpy.array_equal(array, reloaded)
-  finally:
-    if os.path.exists(tmpname): os.unlink(tmpname)
-
-def test_hdf5():
-
-  # array writing tests
-  a1 = numpy.random.normal(size=(2,3)).astype('float32')
-  a2 = numpy.random.normal(size=(2,3,4)).astype('float64')
-  a3 = numpy.random.normal(size=(2,3,4,5)).astype('complex128')
-  a4 = (10 * numpy.random.normal(size=(3,3))).astype('uint64')
-
-  array_readwrite('.hdf5', a1) # extensions: .hdf5 or .h5
-  array_readwrite(".h5", a2)
-  array_readwrite('.h5', a3)
-  array_readwrite(".h5", a4)
-  array_readwrite('.h5', a3[:,::2,::2,::2]) #test non-contiguous
-
-  # arrayset writing tests
-  a1 = []
-  a2 = []
-  a3 = []
-  a4 = []
-  for k in range(10):
-    a1.append(numpy.random.normal(size=(2,3)).astype('float32'))
-    a2.append(numpy.random.normal(size=(2,3,4)).astype('float64'))
-    a3.append(numpy.random.normal(size=(2,3,4,5)).astype('complex128'))
-    a4.append((10*numpy.random.normal(size=(3,3))).astype('uint64'))
-
-  arrayset_readwrite('.h5', a1)
-  arrayset_readwrite(".h5", a2)
-  arrayset_readwrite('.h5', a3)
-  arrayset_readwrite(".h5", a4)
-
-  # complete transcoding tests
-  transcode(test_utils.datafile('test1.hdf5', __name__))
-  transcode(test_utils.datafile('matlab_1d.hdf5', __name__))
-  transcode(test_utils.datafile('matlab_2d.hdf5', __name__))
diff --git a/bob/io/base/test_hdf5.py b/bob/io/base/test_hdf5.py
deleted file mode 100644
index a1ed619..0000000
--- a/bob/io/base/test_hdf5.py
+++ /dev/null
@@ -1,546 +0,0 @@
-#!/usr/bin/env python
-# vim: set fileencoding=utf-8 :
-# Andre Anjos <andre.anjos@idiap.ch>
-# Wed Jun 22 17:50:08 2011 +0200
-#
-# Copyright (C) 2011-2014 Idiap Research Institute, Martigny, Switzerland
-
-"""Tests for the base HDF5 infrastructure
-"""
-
-import os
-import sys
-import numpy
-import random
-import nose.tools
-
-from . import HDF5File, load, save, peek_all, test_utils
-
-def read_write_check(outfile, dname, data, dtype=None):
-  """Tests scalar input/output on HDF5 files"""
-
-  if dtype is not None: data = [dtype(k) for k in data]
-
-  # First, we test that we can read and write 1 single element
-  outfile.append(dname + '_single', data[0])
-
-  # Set attributes on the dataset and current path (single scalar)
-  outfile.set_attribute(dname + '_single_attr', data[0], dname + '_single')
-  outfile.set_attribute(dname + '_single_attr', data[0])
-
-  # Makes sure we can read the value out
-  assert numpy.array_equal(outfile.lread(dname + '_single', 0), data[0])
-
-  # Makes sure we can read the attributes out
-  assert numpy.array_equal(outfile.get_attribute(dname + '_single_attr', dname + '_single'), data[0])
-  assert numpy.array_equal(outfile.get_attribute(dname + '_single_attr'), data[0])
-
-  # Now we go for the full set
-  outfile.append(dname, data)
-
-  # Also create big attributes to see if that works
-  outfile.set_attribute(dname + '_attr', data, dname + '_single')
-  outfile.set_attribute(dname + '_attr', data)
-
-  # And that we can read it back
-  back = outfile.lread(dname) #we read all at once as it is simpler
-  for i, b in enumerate(back): assert numpy.array_equal(b, data[i])
-
-  # Check the attributes
-  assert numpy.array_equal(outfile.get_attribute(dname + '_attr', dname + '_single'), data)
-  assert numpy.array_equal(outfile.get_attribute(dname + '_attr'), data)
-
-def read_write_array_check(outfile, dtype):
-  N = 10
-  SHAPE = (2, 3, 4, 2) #48 elements in arrays
-  arrays = []
-  for k in range(N):
-    data = [random.uniform(0,N) for z in range(numpy.product(SHAPE))]
-    nparray = numpy.array(data, dtype=dtype).reshape(SHAPE)
-    arrays.append(nparray)
-  read_write_check(outfile, dtype.__name__ + '_array', arrays)
-
-def read_write_subarray_check(outfile, dtype):
-  N = 10
-  SHAPE = (2, 3, 4, 2) #48 elements in arrays
-  arrays = []
-  for k in range(N):
-    data = [random.uniform(0,N) for z in range(numpy.product(SHAPE))]
-    nparray = numpy.array(data, dtype=dtype).reshape(SHAPE)
-    usearray = nparray[:,1,1:2,:]
-    assert not usearray.flags.contiguous
-    arrays.append(usearray)
-  read_write_check(outfile, dtype.__name__ + '_subarray', arrays)
-
-def test_can_create():
-
-  # This test demonstrates how to create HDF5 files from scratch,
-  # starting from blitz::Arrays
-
-  try:
-
-    # We start by creating some arrays to play with. Please note that in
-    # normal cases you are either generating these arrays or reading from
-    # other binary files or datasets.
-    N = 2
-    SHAPE = (3, 2) #6 elements
-    NELEMENT = SHAPE[0] * SHAPE[1]
-    arrays = []
-    for k in range(N):
-      data = [int(random.uniform(0,10)) for z in range(NELEMENT)]
-      arrays.append(numpy.array(data, 'int32').reshape(SHAPE))
-
-    # Now we create a new binary output file in a temporary location and save
-    # the data there.
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    outfile.append('testdata', arrays)
-
-    # Data that is thrown in the file is immediately accessible, so you can
-    # interleave read and write operations without any problems.
-    # There is a single variable in the file, which is a bob arrayset:
-    nose.tools.eq_(outfile.paths(), ['/testdata'])
-
-    # And all the data is *exactly* the same recorded, bit by bit
-    back = outfile.lread('testdata') # this is how to read the whole data back
-    for i, b in enumerate(back):
-      assert numpy.array_equal(b, arrays[i])
-
-    # If you want to immediately close the HDF5 file, just delete the object
-    del outfile
-
-    # You can open the file in read-only mode using the 'r' flag. Writing
-    # operations on this file will fail.
-    readonly = HDF5File(tmpname, 'r')
-
-    # There is a single variable in the file, which is a bob arrayset:
-    nose.tools.eq_(readonly.paths(), ['/testdata'])
-
-    # You can get an overview of what is in the HDF5 dataset using the
-    # describe() method
-    description = readonly.describe('testdata')
-
-    nose.tools.eq_(description[0][0][0], arrays[0].dtype)
-    nose.tools.eq_(description[0][0][1], arrays[0].shape)
-    nose.tools.eq_(description[0][1], N) #number of elements
-    nose.tools.eq_(description[0][2], True) #expandable
-
-    # Test that writing will really fail
-    nose.tools.assert_raises(RuntimeError, readonly.append, "testdata", arrays[0])
-
-
-    # And all the data is *exactly* the same recorded, bit by bit
-    back = readonly.lread('testdata') # how to read the whole data back
-    for i, b in enumerate(back):
-      assert numpy.array_equal(b, arrays[i])
-
-  finally:
-    os.unlink(tmpname)
-
-def test_type_support():
-
-  # This test will go through all supported types for reading/writing data
-  # from to HDF5 files. One single file will hold all data for this test.
-  # This is also supported with HDF5: multiple variables in a single file.
-
-  try:
-
-    N = 100
-
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-
-    data = [bool(int(random.uniform(0,2))) for z in range(N)]
-    read_write_check(outfile, 'bool_data', data)
-    data = [int(random.uniform(0,100)) for z in range(N)]
-    read_write_check(outfile, 'int_data', data)
-    read_write_check(outfile, 'int8_data', data, numpy.int8)
-    read_write_check(outfile, 'uint8_data', data, numpy.uint8)
-    read_write_check(outfile, 'int16_data', data, numpy.int16)
-    read_write_check(outfile, 'uint16_data', data, numpy.uint16)
-    read_write_check(outfile, 'int32_data', data, numpy.int32)
-    read_write_check(outfile, 'uint32_data', data, numpy.uint32)
-
-    if sys.version_info[0] < 3:
-      data = [long(random.uniform(0,1000000000)) for z in range(N)]
-    else:
-      data = [int(random.uniform(0,1000000000)) for z in range(N)]
-    read_write_check(outfile, 'long_data', data)
-    read_write_check(outfile, 'int64_data', data, numpy.int64)
-    read_write_check(outfile, 'uint64_data', data, numpy.uint64)
-
-    data = [float(random.uniform(0,1)) for z in range(N)]
-    read_write_check(outfile, 'float_data', data, float)
-    #Note that because of double => float precision issues, the next test will
-    #fail. Python floats are actually double precision.
-    #read_write_check(outfile, 'float32_data', data, numpy.float32)
-    read_write_check(outfile, 'float64_data', data, numpy.float64)
-    #The next construction is not supported by bob
-    #read_write_check(outfile, 'float128_data', data, numpy.float128)
-
-    data = [complex(random.uniform(0,1),random.uniform(-1,0)) for z in range(N)]
-    read_write_check(outfile, 'complex_data', data, complex)
-    #Note that because of double => float precision issues, the next test will
-    #fail. Python floats are actually double precision.
-    #read_write_check(outfile, 'complex64_data', data, numpy.complex64)
-    read_write_check(outfile, 'complex128_data', data, numpy.complex128)
-    #The next construction is not supported by bob
-    #read_write_check(outfile, 'complex256_data', data, numpy.complex256)
-
-    read_write_array_check(outfile, numpy.int8)
-    read_write_array_check(outfile, numpy.int16)
-    read_write_array_check(outfile, numpy.int32)
-    read_write_array_check(outfile, numpy.int64)
-    read_write_array_check(outfile, numpy.uint8)
-    read_write_array_check(outfile, numpy.uint16)
-    read_write_array_check(outfile, numpy.uint32)
-    read_write_array_check(outfile, numpy.uint64)
-    read_write_array_check(outfile, numpy.float32)
-    read_write_array_check(outfile, numpy.float64)
-    #read_write_array_check(outfile, numpy.float128) #no numpy conversion
-    read_write_array_check(outfile, numpy.complex64)
-    read_write_array_check(outfile, numpy.complex128)
-    #read_write_array_check(outfile, numpy.complex256) #no numpy conversion
-
-    read_write_subarray_check(outfile, numpy.int8)
-    read_write_subarray_check(outfile, numpy.int16)
-    read_write_subarray_check(outfile, numpy.int32)
-    read_write_subarray_check(outfile, numpy.int64)
-    read_write_subarray_check(outfile, numpy.uint8)
-    read_write_subarray_check(outfile, numpy.uint16)
-    read_write_subarray_check(outfile, numpy.uint32)
-    read_write_subarray_check(outfile, numpy.uint64)
-    read_write_subarray_check(outfile, numpy.float32)
-    read_write_subarray_check(outfile, numpy.float64)
-    #read_write_subarray_check(outfile, numpy.float128) #no numpy conversion
-    read_write_subarray_check(outfile, numpy.complex64)
-    read_write_subarray_check(outfile, numpy.complex128)
-    #read_write_subarray_check(outfile, numpy.complex256) #no numpy conversion
-
-  finally:
-    os.unlink(tmpname)
-
-def test_dataset_management():
-
-  try:
-
-    # This test examplifies dataset management within HDF5 files and how to
-    # copy, delete and move data around.
-
-    # Let's just create some dummy data to play with
-    N = 100
-
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-
-    data = [int(random.uniform(0,N)) for z in range(N)]
-    outfile.append('int_data', data)
-
-    # This is how to rename a dataset.
-    outfile.rename('int_data', 'MyRenamedDataset')
-
-    # You can move the Dataset to any other hierarchy in the HDF5 file. The
-    # directory structure within the file (i.e. the HDF5 groups) will be
-    # created on demand.
-    outfile.rename('MyRenamedDataset', 'NewDirectory1/Dir2/MyDataset')
-
-    # Let's move the MyDataset dataset to another directory
-    outfile.rename('NewDirectory1/Dir2/MyDataset', 'Test2/Bla')
-
-    # So, now the original dataset name does not exist anymore
-    nose.tools.eq_(outfile.paths(), ['/Test2/Bla'])
-
-    # We can also unlink the dataset from the file. Please note this will not
-    # erase the data in the file, just make it inaccessible
-    outfile.unlink('Test2/Bla')
-
-    # Finally, nothing is there anymore
-    nose.tools.eq_(outfile.paths(), [])
-
-  finally:
-    os.unlink(tmpname)
-
-def test_resize_and_preserve():
-
-  # This test checks that non-contiguous C-style array can be saved
-  # into an HDF5 file.
-
-  try:
-    # Let's just create some dummy data to play with
-    SHAPE = (2, 3) #6 elements
-    NELEMENT = SHAPE[0] * SHAPE[1]
-    data = [int(random.uniform(0,10)) for z in range(NELEMENT)]
-    array = numpy.array(data, 'int32').reshape(SHAPE)
-
-    # Try to save a slice
-    tmpname = test_utils.temporary_filename()
-    save(array[:,0], tmpname)
-
-  finally:
-    os.unlink(tmpname)
-
-def test_can_load_hdf5_from_matlab():
-
-  # shows we can load a 2D matlab array and interpret it as a bunch of 1D
-  # arrays, correctly
-
-  t = load(test_utils.datafile('matlab_1d.hdf5', __name__))
-  nose.tools.eq_(t.shape, (512,))
-  nose.tools.eq_(t.dtype, numpy.float64)
-
-  t = load(test_utils.datafile('matlab_2d.hdf5', __name__))
-  nose.tools.eq_(t.shape, (512, 2))
-  nose.tools.eq_(t.dtype, numpy.float64)
-
-  # interestingly enough, if you load those files as arrays, you will read
-  # the whole data at once:
-
-  dtype, shape, stride = peek_all(test_utils.datafile('matlab_1d.hdf5', __name__))
-  nose.tools.eq_(shape, (512,))
-  nose.tools.eq_(dtype, numpy.dtype('float64'))
-
-  dtype, shape, stride = peek_all(test_utils.datafile('matlab_2d.hdf5', __name__))
-  nose.tools.eq_(shape, (512, 2))
-  nose.tools.eq_(dtype, numpy.dtype('float64'))
-
-def test_matlab_import():
-
-  # This test verifies we can import HDF5 datasets generated in Matlab
-  mfile = HDF5File(test_utils.datafile('matlab_1d.hdf5', __name__))
-  nose.tools.eq_(mfile.paths(), ['/array'])
-
-def test_ioload_unlimited():
-
-  # This test verifies that a 3D array whose first dimension is unlimited
-  # and size equal to 1 can be read as a 2D array
-  mfile = load(test_utils.datafile('test7_unlimited.hdf5', __name__))
-  nose.tools.eq_(mfile.ndim, 2)
-
-def test_attribute_version():
-
-  try:
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    outfile.set_attribute('version', 32)
-    nose.tools.eq_(outfile.get_attribute('version'), 32)
-
-  finally:
-    os.unlink(tmpname)
-
-def test_string_support():
-
-  try:
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    attribute = 'this is my long test string with \nNew lines'
-    outfile.set('string', attribute)
-    recovered = outfile.read('string')
-    #nose.tools.eq_(attribute, recovered)
-
-  finally:
-    del outfile
-    os.unlink(tmpname)
-
-def test_string_attribute_support():
-
-  try:
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    attribute = 'this is my long test string with \nNew lines'
-    outfile.set_attribute('string', attribute)
-    recovered = outfile.get_attribute('string')
-    nose.tools.eq_(attribute, recovered)
-
-    data = [1,2,3,4,5]
-    outfile.set('data', data)
-    outfile.set_attribute('string', attribute, 'data')
-    recovered = outfile.get_attribute('string', 'data')
-    nose.tools.eq_(attribute, recovered)
-
-  finally:
-    os.unlink(tmpname)
-
-def test_can_use_set_with_iterables():
-
-  try:
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    data = [1, 34.5, True]
-    outfile.set('data', data)
-    assert numpy.array_equal(data, outfile.read('data'))
-
-  finally:
-    os.unlink(tmpname)
-
-def test_has_attribute():
-
-  try:
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    i = 35
-    f = 3.14
-    outfile.set_attribute('int', i)
-    outfile.set_attribute('float', f)
-    assert outfile.has_attribute('int')
-    nose.tools.eq_(outfile.get_attribute('int'), 35)
-    assert outfile.has_attribute('float')
-    nose.tools.eq_(outfile.get_attribute('float'), 3.14)
-
-  finally:
-    os.unlink(tmpname)
-
-def test_get_attributes():
-
-  try:
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    nothing = outfile.get_attributes()
-    nose.tools.eq_(len(nothing), 0)
-    assert isinstance(nothing, dict)
-    i = 35
-    f = 3.14
-    outfile.set_attribute('int', i)
-    outfile.set_attribute('float', f)
-    d = outfile.get_attributes()
-    nose.tools.eq_(d['int'], i)
-    nose.tools.eq_(d['float'], f)
-
-  finally:
-    os.unlink(tmpname)
-
-def test_set_compression():
-
-  try:
-
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    data = numpy.random.random((50,50))
-    outfile.set('data', data, compression=9)
-    recovered = outfile.read('data')
-    assert numpy.array_equal(data, recovered)
-    del outfile
-
-  finally:
-
-    os.unlink(tmpname)
-
-def test_append_compression():
-
-  try:
-
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    data = numpy.random.random((50,50))
-    for k in range(len(data)): outfile.append('data', data[k], compression=9)
-    recovered = outfile.read('data')
-    assert numpy.array_equal(data, recovered)
-
-  finally:
-
-    os.unlink(tmpname)
-
-
-def test_close():
-  try:
-    tmpname = test_utils.temporary_filename()
-    outfile = HDF5File(tmpname, 'w')
-    outfile.close()
-
-    def test_set():
-      outfile.set("Test", numpy.array([1,2]))
-    nose.tools.assert_raises(RuntimeError, test_set)
-
-    def test_read():
-      test = outfile.read("Test")
-    nose.tools.assert_raises(RuntimeError, test_read)
-
-    def test_filename():
-      fn = outfile.filename
-    nose.tools.assert_raises(RuntimeError, test_filename)
-
-  finally:
-    os.unlink(tmpname)
-
-def test_copy_constructor():
-  try:
-    tmpname = test_utils.temporary_filename()
-    tmpname2 = test_utils.temporary_filename()
-    hdf5 = HDF5File(tmpname, 'w')
-    shallow = HDF5File(hdf5)
-    deep = HDF5File(tmpname2, 'w')
-    hdf5.copy(deep)
-
-    hdf5.create_group("Test")
-    hdf5.cd("Test")
-    hdf5.set("Data", numpy.random.random((10,10)))
-    hdf5.flush()
-
-    assert shallow.has_group("/Test")
-    assert shallow.has_key("/Test/Data")
-    assert hdf5.filename == shallow.filename
-    assert hdf5.keys() == shallow.keys()
-    assert hdf5.cwd == shallow.cwd
-
-    assert not deep.has_group("/Test")
-    assert hdf5.filename != deep.filename
-    assert hdf5.keys() != deep.keys()
-    assert hdf5.cwd != deep.cwd
-    assert str(shallow)
-
-    hdf5.cd("..")
-
-    assert hdf5.sub_groups() == shallow.sub_groups()
-    assert hdf5.sub_groups() != deep.sub_groups()
-
-    assert hdf5.writable
-    assert shallow.writable
-    assert deep.writable
-
-
-    hdf5.close()
-    deep.close()
-
-    def test_filename():
-      fn = shallow.filename
-    nose.tools.assert_raises(RuntimeError, test_filename)
-    def test_repr():
-      fn = str(shallow)
-    nose.tools.assert_raises(RuntimeError, test_repr)
-
-  finally:
-    os.unlink(tmpname)
-    os.unlink(tmpname2)
-
-
-def test_python_interfaces():
-  try:
-    tmpname = test_utils.temporary_filename()
-    with HDF5File(tmpname, 'w') as hdf5:
-      a = numpy.arange(10)
-      b = a * 2
-      hdf5['Data'] = a
-      hdf5.create_group('Group1')
-      hdf5['Group1/Data'] = b
-      assert "/Group1/Data" in hdf5
-      assert [key for key in hdf5] == hdf5.keys()
-      assert numpy.allclose(hdf5['Data'], hdf5.get('Data'))
-      assert all(numpy.allclose(c, d) for c, d in zip(hdf5.values(), (a, b)))
-      for key, value in hdf5.items():
-        assert numpy.allclose(value, hdf5[key])
-
-  finally:
-    os.unlink(tmpname)
-
-def unicode_test():
-  filename = u"Φîłèñäϻæ.hdf5"
-
-  # writing using unicode filename
-  hdf5 = HDF5File(filename, 'w')
-  hdf5.set('Test', range(10))
-  del hdf5
-
-  # writing using unicode filename
-  hdf5 = HDF5File(filename)
-  assert numpy.allclose(hdf5["Test"], range(10))
-  os.remove(filename)
-
diff --git a/bob/io/base/test_io.py b/bob/io/base/test_io.py
deleted file mode 100644
index f909228..0000000
--- a/bob/io/base/test_io.py
+++ /dev/null
@@ -1,96 +0,0 @@
-import nose
-import numpy as np
-import os
-from . import vstack_features, save, load
-from .test_utils import temporary_filename
-
-
-def test_io_vstack():
-
-  paths = [1, 2, 3, 4, 5]
-
-  def oracle(reader, paths):
-    return np.vstack([reader(p) for p in paths])
-
-  def reader_same_size_C(path):
-    return np.arange(10).reshape(5, 2)
-
-  def reader_different_size_C(path):
-    return np.arange(2 * path).reshape(path, 2)
-
-  def reader_same_size_F(path):
-    return np.asfortranarray(np.arange(10).reshape(5, 2))
-
-  def reader_different_size_F(path):
-    return np.asfortranarray(np.arange(2 * path).reshape(path, 2))
-
-  def reader_same_size_C2(path):
-    return np.arange(30).reshape(5, 2, 3)
-
-  def reader_different_size_C2(path):
-    return np.arange(6 * path).reshape(path, 2, 3)
-
-  def reader_same_size_F2(path):
-    return np.asfortranarray(np.arange(30).reshape(5, 2, 3))
-
-  def reader_different_size_F2(path):
-    return np.asfortranarray(np.arange(6 * path).reshape(path, 2, 3))
-
-  def reader_wrong_size(path):
-    return np.arange(2 * path).reshape(2, path)
-
-  # when same_size is False
-  for reader in [
-    reader_different_size_C,
-    reader_different_size_F,
-    reader_same_size_C,
-    reader_same_size_F,
-    reader_different_size_C2,
-    reader_different_size_F2,
-    reader_same_size_C2,
-    reader_same_size_F2,
-  ]:
-    np.all(vstack_features(reader, paths) == oracle(reader, paths))
-
-  # when same_size is True
-  for reader in [
-    reader_same_size_C,
-    reader_same_size_F,
-    reader_same_size_C2,
-    reader_same_size_F2,
-  ]:
-    np.all(vstack_features(reader, paths, True) == oracle(reader, paths))
-
-  with nose.tools.assert_raises(AssertionError):
-    vstack_features(reader_wrong_size, paths)
-
-  # test actual files
-  paths = [temporary_filename(), temporary_filename(), temporary_filename()]
-  try:
-    # try different readers:
-    for reader in [
-      reader_different_size_C,
-      reader_different_size_F,
-      reader_same_size_C,
-      reader_same_size_F,
-      reader_different_size_C2,
-      reader_different_size_F2,
-      reader_same_size_C2,
-      reader_same_size_F2,
-    ]:
-      # save some data in files
-      for i, path in enumerate(paths):
-        save(reader(i + 1), path)
-      # test when all data is present
-      reference = oracle(load, paths)
-      np.all(vstack_features(load, paths) == reference)
-      os.remove(paths[0])
-      # Check if RuntimeError is raised when one of the files is missing
-      with nose.tools.assert_raises(RuntimeError):
-        vstack_features(load, paths)
-  finally:
-    try:
-      for path in paths:
-        os.remove(path)
-    except Exception:
-      pass
diff --git a/bob/io/base/utils.py b/bob/io/base/utils.py
new file mode 100644
index 0000000..16ccb62
--- /dev/null
+++ b/bob/io/base/utils.py
@@ -0,0 +1,126 @@
+import numpy as np
+
+
+def to_matplotlib(img):
+    """Returns a view of the image from Bob format to matplotlib format.
+    This function works with images, batches of images, videos, and higher
+    dimensional arrays that contain images.
+
+    Parameters
+    ----------
+    img : numpy.ndarray
+        A N dimensional array containing an image in Bob format (channels
+        first): For an ND array (N >= 3), the image should have the following
+        format: ``(..., c, h, w)``.
+
+    Returns
+    -------
+    numpy.ndarray
+        A view of the ``img`` compatible with
+        :py:func:`matplotlib.pyplot.imshow`.
+    """
+    if img.ndim < 3:
+        return img
+    return np.moveaxis(img, -3, -1)
+
+
+def to_bob(img):
+    """Returns a view of the image from matplotlib format to Bob format.
+    This function works with images, batches of images, videos, and higher
+    dimensional arrays that contain images.
+
+    Parameters
+    ----------
+    img : numpy.ndarray
+        An image in matplotlib format (channels last): For an ND array (N >= 3),
+        the image should have the following format: ``(..., h, w, c)``.
+
+    Returns
+    -------
+    numpy.ndarray
+        A view of the ``img`` compatible with Bob.
+    """
+    if img.ndim < 3:
+        return img
+    return np.moveaxis(img, -1, -3)
+
+
+def opencvbgr_to_bob(img):
+    """Returns a view of the image from OpenCV BGR format to Bob RGB format.
+    This function works with images, batches of images, videos, and higher
+    dimensional arrays that contain images.
+
+    Parameters
+    ----------
+    img : numpy.ndarray
+        An image loaded by OpenCV. It needs to have at least 3 dimensions.
+
+    Returns
+    -------
+    numpy.ndarray
+        A view of the ``img`` compatible with Bob.
+
+    Raises
+    ------
+    ValueError
+        If the image dimension is less than 3.
+    """
+    if img.ndim < 3:
+        raise ValueError("You need to provide at least a 3 dimensional image")
+    img = img[..., ::-1]
+    return to_bob(img)
+
+
+def bob_to_opencvbgr(img):
+    """Returns a view of the image from Bob format to OpenCV BGR format.
+    This function works with images, batches of images, videos, and higher
+    dimensional arrays that contain images.
+
+    Parameters
+    ----------
+    img : numpy.ndarray
+        An image loaded by Bob. It needs to have at least 3 dimensions.
+
+    Returns
+    -------
+    numpy.ndarray
+        A view of the ``img`` compatible with OpenCV.
+
+    Raises
+    ------
+    ValueError
+        If the image dimension is less than 3.
+    """
+    if img.ndim < 3:
+        raise ValueError("You need to provide at least a 3 dimensional image")
+    img = img[..., ::-1, :, :]
+    return to_matplotlib(img)
+
+
+def imshow(img, cmap=None, **kwargs):
+    """Plots the images that are returned by :py:func:`bob.io.base.load`
+
+    Parameters
+    ----------
+    img : numpy.ndarray
+        A 2 or 3 dimensional array containing an image in
+        bob style: For a 2D array (grayscale image) should be ``(h, w)``;
+        A 3D array (color image) should be in the ``(c, h, w)`` format.
+    cmap : matplotlib.colors.Colormap
+        Colormap, optional, default: ``None``.
+        If ``cmap`` is ``None`` and ``img.ndim`` is 2, defaults to 'gray'.
+        ``cmap`` is ignored when ``img`` has RGB(A) information.
+    **kwargs
+        These are passed directly to :py:func:`matplotlib.pyplot.imshow`
+
+    Returns
+    -------
+    object
+        Returns whatever ``plt.imshow`` returns.
+    """
+    import matplotlib.pyplot as plt
+
+    if cmap is None and img.ndim == 2:
+        cmap = "gray"
+
+    return plt.imshow(to_matplotlib(img), cmap=cmap, **kwargs)
diff --git a/bob/io/base/version.cpp b/bob/io/base/version.cpp
deleted file mode 100644
index 91ccc1d..0000000
--- a/bob/io/base/version.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * @author Andre Anjos <andre.anjos@idiap.ch>
- * @date Thu  7 Nov 13:50:16 2013
- *
- * @brief Binds configuration information available from bob
- */
-
-#define BOB_IMPORT_VERSION
-#include <bob.blitz/config.h>
-#include <bob.blitz/cleanup.h>
-#include <bob.core/config.h>
-#include <bob.io.base/config.h>
-
-static PyObject* build_version_dictionary() {
-
-  PyObject* retval = PyDict_New();
-  if (!retval) return 0;
-  auto retval_ = make_safe(retval);
-
-  if (!dict_steal(retval, "HDF5", hdf5_version())) return 0;
-  if (!dict_steal(retval, "Boost", boost_version())) return 0;
-  if (!dict_steal(retval, "Compiler", compiler_version())) return 0;
-  if (!dict_steal(retval, "Python", python_version())) return 0;
-  if (!dict_steal(retval, "NumPy", numpy_version())) return 0;
-  if (!dict_steal(retval, "Blitz++", blitz_version())) return 0;
-  if (!dict_steal(retval, "bob.blitz", bob_blitz_version())) return 0;
-  if (!dict_steal(retval, "bob.core", bob_core_version())) return 0;
-
-  return Py_BuildValue("O", retval);
-}
-
-static PyMethodDef module_methods[] = {
-    {0}  /* Sentinel */
-};
-
-PyDoc_STRVAR(module_docstr,
-"Information about software used to compile the C++ Bob API"
-);
-
-#if PY_VERSION_HEX >= 0x03000000
-static PyModuleDef module_definition = {
-  PyModuleDef_HEAD_INIT,
-  BOB_EXT_MODULE_NAME,
-  module_docstr,
-  -1,
-  module_methods,
-  0, 0, 0, 0
-};
-#endif
-
-static PyObject* create_module (void) {
-
-# if PY_VERSION_HEX >= 0x03000000
-  PyObject* m = PyModule_Create(&module_definition);
-  auto m_ = make_xsafe(m);
-  const char* ret = "O";
-# else
-  PyObject* m = Py_InitModule3(BOB_EXT_MODULE_NAME, module_methods, module_docstr);
-  const char* ret = "N";
-# endif
-  if (!m) return 0;
-
-  /* register version numbers and constants */
-  if (PyModule_AddIntConstant(m, "api", BOB_IO_BASE_API_VERSION) < 0)
-    return 0;
-  if (PyModule_AddStringConstant(m, "module", BOB_EXT_MODULE_VERSION) < 0)
-    return 0;
-  if (PyModule_AddObject(m, "externals", build_version_dictionary()) < 0) return 0;
-
-  // call bob_io_base_version once to avoid compiler warning
-  auto _ = make_safe(bob_io_base_version());
-
-  return Py_BuildValue(ret, m);
-}
-
-PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) {
-# if PY_VERSION_HEX >= 0x03000000
-  return
-# endif
-    create_module();
-}
diff --git a/conda/meta.yaml b/conda/meta.yaml
index 815ac14..debadfa 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -17,27 +17,16 @@ build:
     - "{{ PYTHON }} -m pip install . -vv"
 
 requirements:
-  build:
-    - {{ compiler('c') }}
-    - {{ compiler('cxx') }}
-    - pkg-config {{ pkg_config }}
-    - cmake {{ cmake }}
-    - make {{ make }}
   host:
     - python {{ python }}
     - setuptools {{ setuptools }}
     - pip {{ pip }}
     - bob.extension
-    - bob.blitz
-    - bob.core
-    - libblitz {{ libblitz }}
-    - hdf5 {{ hdf5 }}
-    - boost {{ boost }}
+    - h5py {{ h5py }}
     - numpy {{ numpy }}
   run:
     - python
     - setuptools
-    - boost
     - {{ pin_compatible('numpy') }}
 
 test:
diff --git a/doc/c_cpp_api.rst b/doc/c_cpp_api.rst
deleted file mode 100644
index 95ea240..0000000
--- a/doc/c_cpp_api.rst
+++ /dev/null
@@ -1,168 +0,0 @@
-.. vim: set fileencoding=utf-8 :
-.. Andre Anjos <andre.dos.anjos@gmail.com>
-.. Tue 15 Oct 14:59:05 2013
-
-=========
- C++ API
-=========
-
-The C++ API of ``bob.io.base`` allows users to leverage from automatic converters
-for classes in :py:class:`bob.io.base`.  To use the C API, clients should first,
-include the header file ``<bob.io.base/api.h>`` on their compilation units and
-then, make sure to call once ``import_bob_io_base()`` at their module
-instantiation, as explained at the `Python manual
-<http://docs.python.org/2/extending/extending.html#using-capsules>`_.
-
-Here is a dummy C example showing how to include the header and where to call
-the import function:
-
-.. code-block:: c++
-
-   #include <bob.io.base/api.h>
-
-   PyMODINIT_FUNC initclient(void) {
-
-     PyObject* m Py_InitModule("client", ClientMethods);
-
-     if (!m) return;
-
-     /* imports dependencies */
-     if (import_bob_blitz() < 0) {
-       PyErr_Print();
-       PyErr_SetString(PyExc_ImportError, "cannot import extension");
-       return 0;
-     }
-
-     if (import_bob_io_base() < 0) {
-       PyErr_Print();
-       PyErr_SetString(PyExc_ImportError, "cannot import extension");
-       return 0;
-     }
-
-   }
-
-
-Generic Functions
------------------
-
-.. cpp:function:: int PyBobIo_AsTypenum(bob::core::array::ElementType et)
-
-   Converts the input Bob element type into a ``NPY_<TYPE>`` enumeration value.
-   Returns ``NPY_NOTYPE`` in case of problems, and sets a
-   :py:exc:`RuntimeError`.
-
-.. cpp:function:: PyObject* PyBobIo_TypeInfoAsTuple (const bob::core::array::typeinfo& ti)
-
-   Converts the ``bob::core::array::typeinfo&`` object into a **new reference**
-   to a :py:class:`tuple` with 3 elements:
-
-     [0]
-         The data type as a :py:class:`numpy.dtype` object
-
-     [1]
-         The shape of the object, as a tuple of integers
-
-     [2]
-         The strides of the object, as a tuple of integers
-
-   Returns ``0`` in case of failure, or a **new reference** to the tuple
-   described above in case of success.
-
-
-.. cpp:function:: int PyBobIo_FilenameConverter (PyObject* o, const char** b)
-
-   This function is meant to be used with :c:func:`PyArg_ParseTupleAndKeywords`
-   family of functions in the Python C-API. It converts an arbitrary input
-   object into a ``const char*`` If the input object is of type
-   ``PyUnicodeObject`` (which is the default in Python3.x) the unicode code is
-   properly decoded using :c:func:`PyUnicode_AsEncodedString` with ``encoding``
-   set to ``Py_FileSystemDefaultEncoding`` and ``errors`` set to ``"strict"``.
-
-   Objects which are not ``PyUnicodeObject`` are first coerced into a
-   bytes/string before converting to the ``const char*`` object using
-   :c:func:`PyObject_Bytes` (on Python3.x) and :c:func:`PyObject_Str`
-   (on Python 2.x).
-
-   Returns 0 if an error is detected, 1 on success.
-
-   .. note::
-      Since version 2.2, this function converts into ``const char*`` directly.
-      Before version 2.2, it was returning either ``PyBytesObject`` (Python 3)
-      or ``PyStringObject`` (Python 2).
-
-
-Bob File Support
-----------------
-
-.. cpp:type:: PyBobIoFileObject
-
-   The pythonic object representation for a ``bob::io::base::File`` object.
-
-   .. code-block:: cpp
-
-      typedef struct {
-        PyObject_HEAD
-        boost::shared_ptr<bob::io::base::File> f;
-      } PyBobIoFileObject;
-
-   .. cpp:member:: boost::shared_ptr<bob::io::base::File> f
-
-      A pointer to a file being read or written.
-
-.. cpp:type:: PyBobIoFileIteratorObject
-
-   The pythonic object representation for an iterator over a
-   ``bob::io::base::File`` object.
-
-   .. code-block:: cpp
-
-      typedef struct {
-        PyObject_HEAD
-        PyBobIoFileObject* pyfile;
-        Py_ssize_t curpos;
-      } PyBobIoFileIteratorObject;
-
-   .. cpp:member:: PyBobIoFileObject* pyfile
-
-      A pointer to the pythonic representation of a file.
-
-   .. cpp:member:: Py_ssize_t curpos
-
-      The current position at the file being pointed to.
-
-
-Bob HDF5 Support
-----------------
-
-.. cpp:type:: PyBobIoHDF5FileObject
-
-   The pythonic object representation for a ``bob::io::base::HDF5File`` object.
-
-   .. code-block:: cpp
-
-      typedef struct {
-        PyObject_HEAD
-        boost::shared_ptr<bob::io::base::HDF5File> f;
-      } PyBobIoHDF5FileObject;
-
-   .. cpp:member:: boost::shared_ptr<bob::io::base::HDF5File> f
-
-      A pointer to a Bob object being used to read/write data into an HDF5
-      file.
-
-
-.. cpp:function:: int PyBobIoHDF5File_Check(PyObject* o)
-
-   Checks if the input object ``o`` is a ``PyBobIoHDF5FileObject``. Returns
-   ``1`` if it is, and ``0`` otherwise.
-
-
-.. cpp:function:: int PyBobIoHDF5File_Converter(PyObject* o, PyBobIoHDF5FileObject** a)
-
-   This function is meant to be used with :c:func:`PyArg_ParseTupleAndKeywords`
-   family of functions in the Python C-API. It checks the input object to be of
-   type ``PyBobIoHDF5FileObject`` and sets a **new reference** to it (in
-   ``*a``) if it is the case. Returns ``0`` in case of failure, ``1`` in case
-   of success.
-
-.. include:: links.rst
diff --git a/doc/extra-intersphinx.txt b/doc/extra-intersphinx.txt
index 4a36b0b..9c61c73 100644
--- a/doc/extra-intersphinx.txt
+++ b/doc/extra-intersphinx.txt
@@ -1,2 +1 @@
-scipy
-bob.io.image
+scipy
\ No newline at end of file
diff --git a/doc/guide.rst b/doc/guide.rst
deleted file mode 100644
index 0c20a86..0000000
--- a/doc/guide.rst
+++ /dev/null
@@ -1,382 +0,0 @@
-.. vim: set fileencoding=utf-8 :
-.. Andre Anjos <andre.dos.anjos@gmail.com>
-.. Fri 16 May 11:48:13 2014 CEST
-
-============
- User Guide
-============
-
-This section gives an overview of the operations for storing and retrieving the
-basic data structures in |project|, such as `NumPy`_ arrays. |project| uses
-`HDF5`_  format for storing binary coded data. Using the |project| support for
-`HDF5`_, it is very simple to import and export data.
-
-`HDF5`_  uses a neat descriptive language for representing the data in the HDF5
-files, called Data Description Language (`DDL`_).
-
-To perform the functionalities given in this section, you should have `NumPy`_
-and |project| loaded into the `Python`_ environment.
-
-.. testsetup:: *
-
-   import numpy
-   import bob.io.base
-   import tempfile
-   import os
-
-   current_directory = os.path.realpath(os.curdir)
-   temp_dir = tempfile.mkdtemp(prefix='bob_doctest_')
-   os.chdir(temp_dir)
-
-HDF5 standard utilities
------------------------
-
-Before explaining the basics of reading and writing to `HDF5`_ files, it is
-important to list some `HDF5`_ standard utilities for checking the content of
-an `HDF5`_ file. These are supplied by the `HDF5`_ project.
-
-``h5dump``
-  Dumps the content of the file using the DDL.
-
-``h5ls``
-  Lists the content of the file using DDL, but does not show the data.
-
-``h5diff``
-  Finds the differences between HDF5 files.
-
-I/O operations using the class `bob.io.base.HDF5File`
-------------------------------------------------------
-
-Writing operations
-~~~~~~~~~~~~~~~~~~
-
-Let's take a look at how to write simple scalar data such as integers or
-floats.
-
-.. doctest::
-
-   >>> an_integer = 5
-   >>> a_float = 3.1416
-   >>> f = bob.io.base.HDF5File('testfile1.hdf5', 'w')
-   >>> f.set('my_integer', an_integer)
-   >>> f.set('my_float', a_float)
-   >>> del f
-
-If after this you use the **h5dump** utility on the file ``testfile1.hdf5``,
-you will verify that the file now contains:
-
-.. code-block:: none
-
-  HDF5 "testfile1.hdf5" {
-  GROUP "/" {
-    DATASET "my_float" {
-       DATATYPE  H5T_IEEE_F64LE
-       DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
-       DATA {
-       (0): 3.1416
-       }
-    }
-    DATASET "my_integer" {
-       DATATYPE  H5T_STD_I32LE
-       DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
-       DATA {
-       (0): 5
-       }
-    }
-  }
-  }
-
-.. note::
-
-   In |project|, when you open a HDF5 file, you can choose one of the following
-   options:
-
-   **'r'** Open the file in reading mode; writing operations will fail (this is the default).
-
-   **'a'** Open the file in reading and writing mode with appending.
-
-   **'w'** Open the file in reading and writing mode, but truncate it.
-
-   **'x'** Read/write/append with exclusive access.
-
-The dump shows that there are two datasets inside a group named ``/`` in the
-file.  HDF5 groups are like file system directories. They create namespaces for
-the data. In the root group (or directory), you will find the two variables,
-named as you set them to be.  The variable names are the complete path to the
-location where they live. You could write a new variable in the same file but
-in a different directory like this:
-
-.. doctest::
-
-  >>> f = bob.io.base.HDF5File('testfile1.hdf5', 'a')
-  >>> f.create_group('/test')
-  >>> f.set('/test/my_float', numpy.float32(6.28))
-  >>> del f
-
-Line 1 opens the file for reading and writing, but without truncating it. This
-will allow you to access the file contents. Next, the directory ``/test`` is
-created and a new variable is written inside the subdirectory. As you can
-verify, **for simple scalars**, you can also force the storage type. Where
-normally one would have a 64-bit real value, you can impose that this variable
-is saved as a 32-bit real value. You can verify the dump correctness with
-``h5dump``:
-
-.. code-block:: none
-
-  GROUP "/" {
-  ...
-   GROUP "test" {
-      DATASET "my_float" {
-         DATATYPE  H5T_IEEE_F32LE
-         DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
-         DATA {
-         (0): 6.28
-         }
-      }
-   }
-  }
-
-Notice the subdirectory ``test`` has been created and inside it a floating
-point number has been stored. Such a float point number has a 32-bit precision
-as it was defined.
-
-.. note::
-
-  If you need to place lots of variables in a subfolder, it may be better to
-  setup the prefix folder before starting the writing operations on the
-  :py:class:`bob.io.base.HDF5File` object. You can do this using the method
-  :py:meth:`bob.io.base.HDF5File.cd`.  Look up its help for more information and usage
-  instructions.
-
-Writing arrays is a little simpler as the :py:class:`numpy.ndarray` objects
-encode all the type information we need to write and read them correctly. Here
-is an example:
-
-.. doctest::
-
-  >>> A = numpy.array(range(4), 'int8').reshape(2,2)
-  >>> f = bob.io.base.HDF5File('testfile1.hdf5', 'a')
-  >>> f.set('my_array', A)
-  >>> f.close()
-
-The result of running ``h5dump`` on the file ``testfile1.hdf5`` should be:
-
-.. code-block:: none
-
-  ...
-   DATASET "my_array" {
-      DATATYPE  H5T_STD_I8LE
-      DATASPACE  SIMPLE { ( 2, 2 ) / ( 2, 2 ) }
-      DATA {
-      (0,0): 0, 1,
-      (1,0): 2, 3
-      }
-   }
-  ...
-
-You don't need to limit yourself to single variables, you can also save lists
-of scalars and arrays using the function :py:meth:`bob.io.base.HDF5File.append`
-instead of :py:meth:`bob.io.base.HDF5File.set`.
-
-Reading operations
-~~~~~~~~~~~~~~~~~~
-
-Reading data from a file that you just wrote to is just as easy. For this task
-you should use :py:meth:`bob.io.base.HDF5File.read`. The read method will read
-all the contents of the variable pointed to by the given path. This is the
-normal way to read a variable you have written with
-:py:meth:`bob.io.base.HDF5File.set`. If you decided to create a list of scalar
-or arrays, the way to read that up would be using
-:py:meth:`bob.io.base.HDF5File.lread` instead. Here is an example:
-
-.. doctest::
-
-  >>> f = bob.io.base.HDF5File('testfile1.hdf5') #read only
-  >>> f.read('my_integer') #reads integer
-  5
-  >>> print(f.read('my_array')) # reads the array
-  [[0 1]
-   [2 3]]
-  >>> del f
-
-Now let's look at an example where we have used
-:py:meth:`bob.io.base.HDF5File.append` instead of
-:py:meth:`bob.io.base.HDF5File.set` to write data to a file. That is normally
-the case when you write lists of variables to a dataset.
-
-.. doctest::
-
-  >>> f = bob.io.base.HDF5File('testfile2.hdf5', 'w')
-  >>> f.append('arrayset', numpy.array(range(10), 'float64'))
-  >>> f.append('arrayset', 2*numpy.array(range(10), 'float64'))
-  >>> f.append('arrayset', 3*numpy.array(range(10), 'float64'))
-  >>> numpy.allclose((f.lread('arrayset', 0)),[ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])
-  True
-  >>> numpy.allclose( (f.lread('arrayset', 2)), [  0.,   3.,   6.,   9.,  12.,  15.,  18.,  21.,  24.,  27.])
-  True
-  >>> del f
-
-This is what the ``h5dump`` of the file would look like:
-
-.. code-block:: none
-
-  HDF5 "testfile4.hdf5" {
-  GROUP "/" {
-     DATASET "arrayset" {
-        DATATYPE  H5T_IEEE_F64LE
-        DATASPACE  SIMPLE { ( 3, 10 ) / ( H5S_UNLIMITED, 10 ) }
-        DATA {
-        (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-        (1,0): 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
-        (2,0): 0, 3, 6, 9, 12, 15, 18, 21, 24, 27
-        }
-     }
-  }
-  }
-
-Notice that the expansion limits for the first dimension have been correctly
-set by |project| so you can insert an *unlimited* number of 1D float vectors.
-Of course, you can also read the whole contents of the arrayset in a single
-shot:
-
-.. doctest::
-
-  >>> f = bob.io.base.HDF5File('testfile2.hdf5')
-  >>> numpy.allclose((f.read('arrayset')),[[  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.],[  0.,   2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.],[  0.,   3.,   6.,   9.,  12.,  15.,  18.,  21.,  24.,  27.]])
-  True
-
-As you can see, the only difference between
-:py:meth:`bob.io.base.HDF5File.read` and
-:py:meth:`bob.io.base.HDF5File.lread` is on how |project| considers the
-available data (as a single array with N dimensions or as a set of arrays with
-N-1 dimensions). In the first example, you would have also been able to read
-the variable `my_array` as an arrayset using
-:py:meth:`bob.io.base.HDF5File.lread` instead of
-:py:meth:`bob.io.base.HDF5File.read`. In this case, each position readout
-would return a 1D uint8 array instead of a 2D array.
-
-
-Pythonic operations on HDF5 files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use some Pythonic opertations on :py:class:`bob.io.base.HDF5File`:
-
-* Use the ``with`` statement to open (and automatically close) HDF5 files.
-* iterate over :py:class:`bob.io.base.HDF5File` objects to get an
-  iterable of keys instead of calling :py:meth:`bob.io.base.HDF5File.keys`.
-* use the ``in`` keyword instead of calling
-  :py:meth:`bob.io.base.HDF5File.has_key`.
-* use Python's dictionary syntax instead of :py:meth:`bob.io.base.HDF5File.set`
-  and :py:meth:`bob.io.base.HDF5File.get`.
-
-For example:
-
-
-.. doctest::
-
-  >>> f = bob.io.base.HDF5File('testfile3.hdf5', 'w')
-  >>> array = numpy.arange(5)
-  >>> f['my_array'] = array # f.set('my_array', array)
-  >>> f['my_array'] # f.get('my_array')
-  array([0, 1, 2, 3, 4])
-  >>> 'my_array' in f # f.has_key('my_array')
-  True
-  >>> [key for key in f] # f.keys()
-  ['/my_array']
-  >>> f.create_group('group1')
-  >>> f.cd('group1')
-  >>> f['my_array_in_group'] = array
-  >>> f.cd('/')
-  >>> # keys(), values(), and items() just like a dictionary
-  >>> [key for key in f.keys()]
-  ['/my_array', '/group1/my_array_in_group']
-  >>> [value for value in f.values()]
-  [array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4])]
-  >>> [(key, value) for key, value in f.items()]
-  [('/my_array', array([0, 1, 2, 3, 4])), ('/group1/my_array_in_group', array([0, 1, 2, 3, 4]))]
-  >>> f.close()
-  >>> # using a with statement to open and close files
-  >>> with bob.io.base.HDF5File('testfile3.hdf5', 'a') as f:
-  ...   f['second_array'] = array
-  >>> f = bob.io.base.HDF5File('testfile3.hdf5', 'r')
-  >>> 'second_array' in f
-  True
-
-Array interfaces
-----------------
-
-What we have shown so far is the generic API to read and write data using HDF5.
-You will use it when you want to import or export data from |project| into
-other software frameworks, debug your data or just implement your own classes
-that can serialize and de-serialize from HDF5 file containers. In |project|,
-most of the time you will be working with :py:class:`numpy.ndarray`\s. In
-special situations though, you may be asked to handle
-:py:class:`bob.io.base.File`\s. :py:class:`bob.io.base.File` objects create a
-transparent connection between C++ (`Blitz++`_) / Python (`NumPy`_) arrays and
-file access.  You specify the filename from which you want to input data and
-the :py:class:`bob.io.base.File` object decides what is the best codec to be
-used (from the extension) and how to read the data back into your array.
-
-To create an :py:class:`bob.io.base.File` from a file path, just do the
-following:
-
-.. doctest::
-
-  >>> a = bob.io.base.File('testfile2.hdf5', 'r')
-  >>> a.filename
-  'testfile2.hdf5'
-
-:py:class:`bob.io.base.File`\s simulate containers for
-:py:class:`numpy.ndarray`\s, transparently accessing the file data when
-requested. Note, however, that when you instantiate an
-:py:class:`bob.io.base.File` it does **not** load the file contents into
-memory. It waits until you emit another explicit instruction to do so. We do
-this with the :py:meth:`bob.io.base.File.read` method:
-
-.. doctest::
-
-  >>> array = a.read()
-  >>> numpy.allclose(array, [[  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.],[  0.,   2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.],[  0.,   3.,   6.,   9.,  12.,  15.,  18.,  21.,  24.,  27.]])
-  True
-
-Every time you say :py:meth:`bob.io.base.File.read`, the file contents will be
-read from the file and into a new array.
-
-Saving arrays to the :py:class:`bob.io.base.File` is as easy, just call the
-:py:meth:`bob.io.base.File.write` method:
-
-.. doctest::
-
-  >>> f = bob.io.base.File('copy1.hdf5', 'w')
-  >>> f.write(array)
-
-Numpy ndarray shortcuts
------------------------
-
-To just load an :py:class:`numpy.ndarray` in memory, you can use a short cut
-that lives at :py:func:`bob.io.base.load`. With it, you don't have to go
-through the :py:class:`bob.io.base.File` container:
-
-.. doctest::
-
-  >>> t = bob.io.base.load('testfile2.hdf5')
-  >>> numpy.allclose(t, [[  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.], [  0.,   2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.],[  0.,   3.,   6.,   9.,  12.,  15.,  18.,  21.,  24.,  27.]])
-  True
-
-You can also directly save :py:class:`numpy.ndarray`\s without going through
-the :py:class:`bob.io.base.File` container:
-
-.. doctest::
-
-  >>> bob.io.base.save(t, 'copy2.hdf5')
-
-.. note::
-
-  Under the hood, we still use the :py:class:`bob.io.base.File` API to execute
-  the read and write operations. Have a look at the manual section for
-  :py:mod:`bob.io.base` for more details and other shortcuts available.
-
-
-.. Place here your external references
-.. include:: links.rst
-.. _ddl: http://www.hdfgroup.org/HDF5/doc/ddl.html
diff --git a/doc/index.rst b/doc/index.rst
index c24f651..74ade76 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -13,12 +13,10 @@ Below is the old documentation.
 
 This module contains a basic interface to read and write files of various
 types.  It provides generic functions :py:func:`bob.io.base.save` and
-:py:func:`bob.io.base.load` to write and read various types of data.  In this
-interface, data is mainly written using the :py:class:`bob.io.base.HDF5File`
-interface.  To enable further types of IO, please import one of the following
+:py:func:`bob.io.base.load` to write and read various types of data. 
+To enable further types of IO, please import one of the following
 packages (the list might not be exhaustive):
 
-* :ref:`bob.io.image` to load and save images of various kinds
 
 
 Documentation
@@ -27,9 +25,7 @@ Documentation
 .. toctree::
    :maxdepth: 2
 
-   guide
-   py_api
-   c_cpp_api
+   py_api   
 
 TODO
 ----
diff --git a/doc/nitpick-exceptions.txt b/doc/nitpick-exceptions.txt
index 97040cc..f61551f 100644
--- a/doc/nitpick-exceptions.txt
+++ b/doc/nitpick-exceptions.txt
@@ -1,37 +1,6 @@
-# these are actually c types
-cpp:type PyObject
-cpp:type Py_ssize_t
-cpp:typeOrConcept PyObject
-cpp:typeOrConcept Py_ssize_t
-
-# no reference exists for these
-cpp:type bob
-cpp:type bob::core
-cpp:type bob::core::array
-cpp:type bob::core::array::typeinfo
-cpp:type bob::core::array::ElementType
-cpp:type boost
-cpp:type boost::shared_ptr
-cpp:type bob::io
-cpp:type bob::io::base
-cpp:type bob::io::base::File
-cpp:type bob::io::base::HDF5File
-cpp:typeOrConcept bob
-cpp:typeOrConcept bob::core
-cpp:typeOrConcept bob::core::array
-cpp:typeOrConcept bob::core::array::typeinfo
-cpp:typeOrConcept bob::core::array::ElementType
-cpp:typeOrConcept boost
-cpp:typeOrConcept boost::shared_ptr
-cpp:typeOrConcept bob::io
-cpp:typeOrConcept bob::io::base
-cpp:typeOrConcept bob::io::base::File
-cpp:typeOrConcept bob::io::base::HDF5File
-
 # exceptions are not found in python 2.7
 py:exc RuntimeError
 py:class tuple
-c:func PyUnicode_FSConverter
 
 # these don't exists on numpy's manual
 py:class numpy.uint8
diff --git a/doc/py_api.rst b/doc/py_api.rst
index 512c928..bec56c4 100644
--- a/doc/py_api.rst
+++ b/doc/py_api.rst
@@ -8,46 +8,14 @@
 
 This section includes information for using the pure Python API of ``bob.io.base``.
 
-
-Classes
--------
-
-.. autosummary::
-   bob.io.base.File
-   bob.io.base.HDF5File
-
 Functions
 ---------
 
 .. autosummary::
    bob.io.base.load
-   bob.io.base.merge
    bob.io.base.save
-   bob.io.base.append
-   bob.io.base.peek
-   bob.io.base.peek_all
    bob.io.base.create_directories_safe
    bob.io.base.vstack_features
 
-   bob.io.base.extensions
-   bob.io.base.get_config
-
-Test Utilities
---------------
-
-These functions might be useful when you are writing your nose tests.
-Please note that this is not part of the default ``bob.io.base`` API, so in order to use it, you have to ``import bob.io.base.test_utils`` separately.
-
-.. autosummary::
-   bob.io.base.test_utils.datafile
-   bob.io.base.test_utils.temporary_filename
-   bob.io.base.test_utils.extension_available
-
-
-Details
--------
 
-.. automodule:: bob.io.base
-   :inherited-members:
 
-.. automodule:: bob.io.base.test_utils
diff --git a/requirements.txt b/requirements.txt
index f2e31db..8fd79bb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1 @@
 bob.extension
-bob.blitz
-bob.core > 2.1.3
diff --git a/setup.py b/setup.py
index 7638992..99c943d 100644
--- a/setup.py
+++ b/setup.py
@@ -2,217 +2,44 @@
 # vim: set fileencoding=utf-8 :
 # Andre Anjos <andre.anjos@idiap.ch>
 # Mon 16 Apr 08:18:08 2012 CEST
+#
+from setuptools import setup, dist
 
-bob_packages = ['bob.core']
+dist.Distribution(dict(setup_requires=["bob.extension"]))
 
-from setuptools import setup, find_packages, dist
-dist.Distribution(dict(setup_requires=['bob.extension', 'bob.blitz'] + bob_packages))
-from bob.extension.utils import egrep, find_header, find_library
-from bob.extension import pkgconfig
-from bob.blitz.extension import Extension, Library, build_ext
-
-from bob.extension.utils import load_requirements
-build_requires = load_requirements()
-
-# Define package version
-version = open("version.txt").read().rstrip()
-
-packages = ['boost']
-boost_modules = ['system', 'filesystem']
-
-def libhdf5_version(header):
-
-  vv = egrep(header, r"#\s*define\s+H5_VERSION\s+\"([\d\.]+)\"")
-  if not len(vv): return None
-  return vv[0].group(1)
-
-class hdf5:
-
-  def __init__ (self):
-    """
-    Searches for libhdf5 in stock locations. Allows user to override.
-
-    If the user sets the environment variable BOB_PREFIX_PATH, that prefixes
-    the standard path locations.
-
-    """
-    import os
-
-    self.name = 'hdf5'
-
-    # try to locate pkg-config on our own first
-    try:
-
-      header = 'hdf5.h'
-
-      candidates = find_header(header)
-
-      if not candidates:
-        raise RuntimeError("could not find %s's `%s' - have you installed %s on this machine?" % (self.name, header, self.name))
-
-      self.include_directories = [os.path.dirname(candidates[0])]
-      directory = os.path.dirname(candidates[0])
-      version_header = os.path.join(directory, 'H5pubconf.h')
-      self.version = libhdf5_version(version_header)
-
-      # normalize
-      self.include_directories = [os.path.normpath(i) for i in self.include_directories]
-
-      # find library
-      prefix = os.path.dirname(os.path.dirname(self.include_directories[0]))
-      module = 'hdf5'
-      candidates = find_library(module, version=self.version, prefixes=[prefix], only_static=False)
-
-      if not candidates:
-        raise RuntimeError("cannot find required %s binary module `%s' - make sure libhdf5 is installed on `%s'" % (self.name, module, prefix))
-
-      # libraries
-      self.libraries = []
-      name, ext = os.path.splitext(os.path.basename(candidates[0]))
-      if ext in ['.so', '.a', '.dylib', '.dll']:
-        self.libraries.append(name[3:]) #strip 'lib' from the name
-      else: #link against the whole thing
-        self.libraries.append(':' + os.path.basename(candidates[0]))
-
-      # library path
-      self.library_directories = [os.path.dirname(candidates[0])]
-
-    except RuntimeError:
-      # now, we try to use pkg-config, which seems to be only available on Debian
-      pkg = pkgconfig('hdf5')
-      self.include_directories = pkg.include_directories()
-      version_header = os.path.join(self.include_directories[0], 'H5pubconf.h')
-      self.version = libhdf5_version(version_header)
-      self.libraries = pkg.libraries()
-      self.library_directories = pkg.library_directories()
-
-
-  def macros(self):
-    return [
-        ('HAVE_%s' % self.name.upper(), '1'),
-        # see https://portal.hdfgroup.org/display/HDF5/Migrating+from+HDF5+1.10+to+HDF5+1.12
-        ('H5_USE_110_API', '1'),
-      ]
-
-
-hdf5_pkg = hdf5()
-
-system_include_dirs = hdf5_pkg.include_directories
-
-library_dirs = hdf5_pkg.library_directories
-
-libraries = hdf5_pkg.libraries
-
-define_macros = hdf5_pkg.macros()
+from bob.extension.utils import load_requirements, find_packages
 
+install_requires = load_requirements()
 
+# The only thing we do in this file is to call the setup() function with all
+# parameters that define our package.
 setup(
-
-    name='bob.io.base',
-    version=version,
-    description='Basic IO for Bob',
-    url='http://gitlab.idiap.ch/bob/bob.io.base',
-    license='BSD',
-    author='Andre Anjos',
-    author_email='andre.anjos@idiap.ch',
-
-    long_description=open('README.rst').read(),
-
+    # This is the basic information about your project. Modify all this
+    # information before releasing code publicly.
+    name="bob.io.base",
+    version=open("version.txt").read().rstrip(),
+    description="Basic IO for Bob",
+    url="http://gitlab.idiap.ch/bob/bob.io.base",
+    license="BSD",
+    author="Andre Anjos",
+    author_email="andre.anjos@idiap.ch",
+    long_description=open("README.rst").read(),
     packages=find_packages(),
     include_package_data=True,
     zip_safe=False,
-
-    setup_requires = build_requires,
-    install_requires = build_requires,
-
-
-
-    ext_modules = [
-      Extension("bob.io.base.version",
-        [
-          "bob/io/base/version.cpp",
-        ],
-        define_macros = define_macros,
-        system_include_dirs = system_include_dirs,
-        version = version,
-        bob_packages = bob_packages,
-        packages = packages,
-        boost_modules = boost_modules,
-      ),
-
-      Library("bob.io.base.bob_io_base",
-        [
-          "bob/io/base/cpp/CodecRegistry.cpp",
-          "bob/io/base/cpp/File.cpp",
-          "bob/io/base/cpp/HDF5ArrayFile.cpp",
-          "bob/io/base/cpp/HDF5Attribute.cpp",
-          "bob/io/base/cpp/HDF5Dataset.cpp",
-          "bob/io/base/cpp/HDF5File.cpp",
-          "bob/io/base/cpp/HDF5Group.cpp",
-          "bob/io/base/cpp/HDF5Types.cpp",
-          "bob/io/base/cpp/HDF5Utils.cpp",
-          "bob/io/base/cpp/reorder.cpp",
-          "bob/io/base/cpp/utils.cpp",
-          "bob/io/base/cpp/array.cpp",
-          "bob/io/base/cpp/array_type.cpp",
-          "bob/io/base/cpp/blitz_array.cpp",
-        ],
-        libraries = libraries,
-        library_dirs = library_dirs,
-        system_include_dirs = system_include_dirs,
-        define_macros = define_macros,
-        version = version,
-        bob_packages = bob_packages,
-        packages = packages,
-        boost_modules = boost_modules,
-      ),
-
-      Extension("bob.io.base._library",
-        [
-          "bob/io/base/bobskin.cpp",
-          "bob/io/base/codec.cpp",
-          "bob/io/base/file.cpp",
-          "bob/io/base/hdf5.cpp",
-          "bob/io/base/main.cpp",
-        ],
-        library_dirs = library_dirs,
-        libraries = libraries,
-        define_macros = define_macros,
-        system_include_dirs = system_include_dirs,
-        version = version,
-        bob_packages = bob_packages,
-        packages = packages,
-        boost_modules = boost_modules,
-      ),
-
-      Extension("bob.io.base._test",
-        [
-          "bob/io/base/test.cpp",
-        ],
-        library_dirs = library_dirs,
-        libraries = libraries,
-        define_macros = define_macros,
-        system_include_dirs = system_include_dirs,
-        version = version,
-        bob_packages = bob_packages,
-        packages = packages,
-        boost_modules = boost_modules,
-      ),
+    setup_requires=install_requires,
+    install_requires=install_requires,
+    # Classifiers are important if you plan to distribute this package through
+    # PyPI. You can find the complete list of classifiers that are valid and
+    # useful here (http://pypi.python.org/pypi?%3Aaction=list_classifiers).
+    classifiers=[
+        "Framework :: Bob",
+        "Development Status :: 4 - Beta",
+        "Intended Audience :: Developers",
+        "License :: OSI Approved :: BSD License",
+        "Natural Language :: English",
+        "Programming Language :: Python",
+        "Programming Language :: Python :: 3",
+        "Topic :: Software Development :: Libraries :: Python Modules",
     ],
-
-    cmdclass = {
-      'build_ext': build_ext
-    },
-
-    classifiers = [
-      'Framework :: Bob',
-      'Development Status :: 4 - Beta',
-      'Intended Audience :: Developers',
-      'License :: OSI Approved :: BSD License',
-      'Natural Language :: English',
-      'Programming Language :: Python',
-      'Programming Language :: Python :: 3',
-      'Topic :: Software Development :: Libraries :: Python Modules',
-    ],
-
-  )
+)
-- 
GitLab