refactore structure