migrate to module architecture