implementing module system