Added in several missing properties to the constructor, to avoid the object changing shape on creation. Added missing jsdocs where possible.