first refactors