refactory 1