First refactoring Version 1.0