refactory 4