Brings back 7 reverted commits

This reverts commit ea0120ad137bb27e89352bada250bce5674abc9a.
This reverts commit 22deb255c98aa10cb226c42468a9021f995c516f.
This reverts commit b2804890eaee6aac9657bfd3851c222080d611f9.
This reverts commit f5f3925f094699558b9663b8c00e781d9fb26c59.
This reverts commit e31d78cbcc949246309d3233b845cd10fc818ed7.
This reverts commit b160c88d3a18401f36b7072fac05662427500dea.
This reverts commit 80ec2abfb6e4ecf908bda9a99731b73ff6fd4f55.
39 files changed