modularize via refactors
separate concerns