modularize it