This is a first step to make this module more usable from the end-user
perspective. We now expose some global utility functions and define more
modules to package them. These modules are also exposed to the end-user
to allow the user to freely use internals functionalities.