added module pattern