wrapped whole module in closure