modularize all the things