adopted module pattern