Data updates

This PR contains PR #4 #5 #6 plus some changes to allow dynamic data updates
I guess I am just trying to understand the benefits? Is there a reason you aren't using [bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)?

My issue is not so much that you are declaring `self = this` but the fact that it is being changed in places where there is no reason to be changed.