struct refactoring