refactors to singular purpose