refactoring and structuring