update structure
REFACTORED