refactoring of the structure
further refactoring of the strucutre