Initial version for code review

Because the initial development was occurring on master, there isn't an easy way to do code review. This pull exists solely as a means to code review the entire project. Any changes will be put straight into master and this pull will be closed and the `initial-code-review` branch deleted. All future development will use pull requests into master to facilitate code review.
same discussion as above (performing a `set` when the user is just performing a `get`).
This might be a problem if, for instance, the user set `setEnabled = false` on an `Enabled` backend which wraps this
`Hierarchy`. They do a `get` on the enabled which is allowed to pass through to the `Hierarchy` which then ends up doing unexpected (possibly?) `set`s