restructured to module