1.6.0: Splitted to allow third party modules to use it.