https://stackoverflow.com/questions/16382165/why-do-i-lose-the-context-of-this-in-javascript
https://stackoverflow.com/questions/30486345/losing-this-context-in-javascript-when-passing-around-members/30491000