refactor , 3