Investigate TypeScript properties
Some classes are currently exposing their properties as regular member values, which breaks the rules of OOP a little.
Since TypeScript actually supports a less ugly syntax to create property accessor functions that could be used to hide such members, that might be a better way to go for encapsulation?
One problem with that is naming, since an object can't have a member and a property with the same name, and I don't really like to wart up internal names.
There should be some investigation into whether or not there are any speed hits/benefits to property access functions instead of direct property access.