refactoring structure again