Revert "change structure"

This reverts commit 69680bf5b406820b2c6a7cccb3f2cb2afe7a9c98.
Revert "Revert "change structure""

This reverts commit 96a75aa5127d9fbb16d8c56b81bcbb40825f2497.