Revert "Revert "restructure""

This reverts commit d46faf047e09ee0fdf0c094adaa7797fb6a3b5c5.