Agree, ES6 classes will make this feel a lot nicer.