structural refactor