I think I scrambled this pull request a bit accidentally. The next pull request will follow @mmoayyed 's instructions.