modularize: part2, WIP