refactoring the structure (continued)