Refactoring(Design again)