Rewrote DerivedProperty to be a subclass of property, see #11