Last commit in this branch. A completely rewrite in es6 and for es6 will start