refactored structure some more