Brings back 4 reverted commits This reverts commit aec733bb622c5d811850870baad69c2b01eb7e8c. This reverts commit d8cd0fb43498ce1b52113887e693526c1fab9c41. This reverts commit ccadcea2e3b76091b9de692033062c70981dc3b6. This reverts commit 07facabafae72c34bed1ee399992af8f18e57d19.