refactoer code.