derived properties can now depend on eachother. You can optionally make models ok with getting arbitrary other properties added. More tests. Better structure.