added ability to dynamically load and unload modules