added initial version of the module system