added modules and extend() method