             } else {
                 let transform = SpectraXMLTransformNode().parse(container, elem: transformTag, options: options)
                 if let transformKey = transformTag.attributes["key"] {
-                    container.register(MDLTransform.self, name: transformKey) { _ in return transform }
+                    container.register(MDLTransform.self, name: transformKey) { _ in
+                        return SpectraXMLTransformNode.copy(transform)
+                    }
                 }
                 object.transform = transform
             }

            } else {
                let lens = SpectraXMLPhysicalLensNode().parse(container, elem: lensTag, options: options)
                if let lensKey = lensTag["key"] {
                    container.register(PhysicalLens.self, name: lensKey) { _ in return lens }
                }
                lens.applyToCamera(cam)
            }

                    } else {
                        let obj = SpectraXMLObjectNode().parse(container, elem: el, options: options)
                        if let key = objKey {
                            container.register(MDLObject.self, name: key) { _ in
                                return SpectraXMLObjectNode.copy(obj)
                            }
                        }
                        object.addChild(obj)
                    }
