Refactored the full structure