do first refactored