adding support for explicit unloading of modules
improving module