Experiments

This is a pull request to experiments. This will not auto merge because your experiments branch is one commit ahead of mine. To roll your branch back do the following.
```git
git checkout experiments
git reset --hard c0bade4 # This wipe lose the your last commit
git push --force origin experiments
```
This code has all been reviewed in previous pull requests.
I can make it to master instead if you would like or you can just merge those yourself.