Readability
defineProperties once
No need to fix `add` in constructor.

`add` should not be run directly in underlying constructors
`toArray` method, produces observable arrays