Revert "Major changes"

This reverts commit 49e528a71f635b9ca952710bb47e63dc89401516.
Revert "Revert "Major changes""

This reverts commit bc224af7964cfe38f28f3fe281b3d2b4c8491036.