refactoring...(some omission of the last commit updated).