ES6 and more!

In this branch I was experimenting with ES6. It works well and I'm going to pull it into master.