refactoring code, lots of modification
refactoring code, lots of modification