1,2,3 refactor