refactory injection