Much updates. Many things have been moved and re-organized.
Revert 8e27ac2..4e8fba9

This rolls back to commit 8e27ac2c72f3683970f0a603f010b09b26627c92.