multiple refactors