passes compiler and test suite, finally! TODO: also switch the derived asset kinds to use P<Media>, P<Struct>,.... maybe do the same with MObject?
hopefully resolves long standing problems with odering and type relations of objects handled via smart ptr