refactore code.