A rebase of the current version and cleaner commits

BTW your reverts of reverts blew. You forgot to clean up.