move to viewerDynamicObjectMixin