more refactoring structure