First step into code refactoring, all test passed
//TODO .. Refactoring