Refactored all the structure.