begin refactor for organization by module