refactoring and restructuration