diff --git a/src/mol-repr/structure/representation/ball-and-stick.ts b/src/mol-repr/structure/representation/ball-and-stick.ts
index ef30a9e51da49e9f67008be2c9f2886541c7e0f1..3cd9a158bdd22ec41c11bc7b5d7e87154aadc186 100644
--- a/src/mol-repr/structure/representation/ball-and-stick.ts
+++ b/src/mol-repr/structure/representation/ball-and-stick.ts
@@ -38,7 +38,7 @@ export const BallAndStickParams = {
 }
 export type BallAndStickParams = typeof BallAndStickParams
 export function getBallAndStickParams(ctx: ThemeRegistryContext, structure: Structure) {
-    return BallAndStickParams // TODO return copy
+    return PD.clone(BallAndStickParams)
 }
 
 export type BallAndStickRepresentation = StructureRepresentation<BallAndStickParams>
diff --git a/src/mol-repr/structure/representation/cartoon.ts b/src/mol-repr/structure/representation/cartoon.ts
index 1d478f25db44e81303f34f522b579636509377d5..16beffdc93ccdd33a656b0c3b9794cce0a0e3057 100644
--- a/src/mol-repr/structure/representation/cartoon.ts
+++ b/src/mol-repr/structure/representation/cartoon.ts
@@ -38,7 +38,7 @@ export const CartoonParams = {
 }
 export type CartoonParams = typeof CartoonParams
 export function getCartoonParams(ctx: ThemeRegistryContext, structure: Structure) {
-    return CartoonParams // TODO return copy
+    return PD.clone(CartoonParams)
 }
 
 export type CartoonRepresentation = StructureRepresentation<CartoonParams>
diff --git a/src/mol-repr/volume/direct-volume.ts b/src/mol-repr/volume/direct-volume.ts
index 295c26fc21cda47fe759223d3f7a2c22cb3cac39..d3890e7e5e58554526cd1a76d20a1a093ccf5ca2 100644
--- a/src/mol-repr/volume/direct-volume.ts
+++ b/src/mol-repr/volume/direct-volume.ts
@@ -161,7 +161,7 @@ export const DirectVolumeParams = {
 }
 export type DirectVolumeParams = typeof DirectVolumeParams
 export function getDirectVolumeParams(ctx: ThemeRegistryContext, volume: VolumeData) {
-    return DirectVolumeParams // TODO return copy
+    return PD.clone(DirectVolumeParams)
 }
 
 export function DirectVolumeVisual(): VolumeVisual<DirectVolumeParams> {
diff --git a/src/mol-repr/volume/isosurface-mesh.ts b/src/mol-repr/volume/isosurface-mesh.ts
index 8f3033dfe67e23c6496fa33db13b3feb17732de7..fd54afcefbdd4ac1f4370f124dd8361cfe18ef42 100644
--- a/src/mol-repr/volume/isosurface-mesh.ts
+++ b/src/mol-repr/volume/isosurface-mesh.ts
@@ -46,7 +46,7 @@ export const IsosurfaceParams = {
 }
 export type IsosurfaceParams = typeof IsosurfaceParams
 export function getIsosurfaceParams(ctx: ThemeRegistryContext, volume: VolumeData) {
-    return IsosurfaceParams // TODO return copy
+    return PD.clone(IsosurfaceParams)
 }
 
 export function IsosurfaceVisual(): VolumeVisual<IsosurfaceParams> {
diff --git a/src/mol-repr/volume/representation.ts b/src/mol-repr/volume/representation.ts
index b865c509fe23af2ea2c717c3541f79263402edb0..c4fa484d7c5ed69fbb53f8a84a90d9f33cd76964 100644
--- a/src/mol-repr/volume/representation.ts
+++ b/src/mol-repr/volume/representation.ts
@@ -145,8 +145,6 @@ export const VolumeParams = {
     isoValueRelative: PD.Range('Iso Value Relative', '', 2, -10, 10, 0.1),
 }
 export type VolumeParams = typeof VolumeParams
-// export const DefaultVolumeProps = PD.getDefaultValues(VolumeParams)
-// export type VolumeProps = typeof DefaultVolumeProps
 
 export function VolumeRepresentation<P extends VolumeParams>(label: string, getParams: RepresentationParamsGetter<VolumeData, P>, visualCtor: (volume: VolumeData) => VolumeVisual<P>): VolumeRepresentation<P> {
     let visual: VolumeVisual<P>
diff --git a/src/mol-util/param-definition.ts b/src/mol-util/param-definition.ts
index 2b7804bc7a4fbbf6f6780749ceb55f5d2cf8649a..3a7c8818a16148067098e6e45e2e751d2bc189b0 100644
--- a/src/mol-util/param-definition.ts
+++ b/src/mol-util/param-definition.ts
@@ -6,6 +6,7 @@
  */
 
 import { Color as ColorData } from './color';
+import { shallowClone } from 'mol-util';
 
 export namespace ParamDefinition {
     export interface Base<T> {
@@ -98,4 +99,8 @@ export namespace ParamDefinition {
         Object.keys(params).forEach(k => d[k] = params[k].defaultValue)
         return d as DefaultValues<T>
     }
+
+    export function clone<P extends Params>(params: P): P {
+        return shallowClone(params)
+    }
 }
\ No newline at end of file