refactoring controler and di