diff --git a/src/mol-plugin/state/actions/basic.ts b/src/mol-plugin/state/actions/basic.ts
index b50889e6b87914b1300cd26bd7def51795c7e3ab..6768bbd6d8e3e068758d2b21e66fda8b4672cb23 100644
--- a/src/mol-plugin/state/actions/basic.ts
+++ b/src/mol-plugin/state/actions/basic.ts
@@ -17,6 +17,8 @@ import { StateTreeBuilder } from 'mol-state/tree/builder';
 import { PolymerIdColorThemeParams } from 'mol-theme/color/polymer-id';
 import { UniformSizeThemeParams } from 'mol-theme/size/uniform';
 import { ElementSymbolColorThemeParams } from 'mol-theme/color/element-symbol';
+import { PhysicalSizeThemeParams } from 'mol-theme/size/physical';
+import { SpacefillParams } from 'mol-repr/structure/representation/spacefill';
 
 // TODO: "structure parser provider"
 
@@ -124,8 +126,12 @@ function complexRepresentation(root: StateTreeBuilder.To<PluginStateObject.Molec
             colorTheme: { name: 'element-symbol', params: PD.getDefaultValues(ElementSymbolColorThemeParams) },
             sizeTheme: { name: 'uniform', params: PD.getDefaultValues(UniformSizeThemeParams) },
         })
-    root.apply(StateTransforms.Model.StructureComplexElement, { type: 'spheres' });
-    // TODO: create spheres visual
+    root.apply(StateTransforms.Model.StructureComplexElement, { type: 'spheres' })
+        .apply(StateTransforms.Representation.StructureRepresentation3D, {
+            type: { name: 'spacefill', params: { ...PD.getDefaultValues(SpacefillParams) } },
+            colorTheme: { name: 'polymer-id', params: PD.getDefaultValues(PolymerIdColorThemeParams) },
+            sizeTheme: { name: 'physical', params: PD.getDefaultValues(PhysicalSizeThemeParams) },
+        })
 }
 
 export const CreateComplexRepresentation = StateAction.build({
diff --git a/src/mol-repr/structure/registry.ts b/src/mol-repr/structure/registry.ts
index f3775cc184e03b7a2791c05ae959abedf267c55f..ef73cfba1b5c5cb6dfbb6b4509dd2ebd38be5f0c 100644
--- a/src/mol-repr/structure/registry.ts
+++ b/src/mol-repr/structure/registry.ts
@@ -11,6 +11,7 @@ import { BallAndStickRepresentationProvider } from './representation/ball-and-st
 import { MolecularSurfaceRepresentationProvider } from './representation/molecular-surface';
 import { CarbohydrateRepresentationProvider } from './representation/carbohydrate';
 import { SpacefillRepresentationProvider } from './representation/spacefill';
+import { DistanceRestraintRepresentationProvider } from './representation/distance-restraint';
 
 export class StructureRepresentationRegistry extends RepresentationRegistry<Structure> {
     constructor() {
@@ -26,6 +27,7 @@ export const BuiltInStructureRepresentations = {
     'cartoon': CartoonRepresentationProvider,
     'ball-and-stick': BallAndStickRepresentationProvider,
     'carbohydrate': CarbohydrateRepresentationProvider,
+    'distance-restraint': DistanceRestraintRepresentationProvider,
     'molecular-surface': MolecularSurfaceRepresentationProvider,
     'spacefill': SpacefillRepresentationProvider,
 }
diff --git a/src/mol-repr/structure/representation/distance-restraint.ts b/src/mol-repr/structure/representation/distance-restraint.ts
index 94edde13a8cb99ff0ec108ef8f90f4018a4e99c3..779f2e14b9a96025b85fd05a00022f8e495a0936 100644
--- a/src/mol-repr/structure/representation/distance-restraint.ts
+++ b/src/mol-repr/structure/representation/distance-restraint.ts
@@ -1,29 +1,42 @@
-// /**
-//  * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
-//  *
-//  * @author Alexander Rose <alexander.rose@weirdbyte.de>
-//  */
+/**
+ * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ *
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
+ */
 
-// import { CrossLinkRestraintVisual, CrossLinkRestraintParams } from '../visual/cross-link-restraint-cylinder';
-// import { ParamDefinition as PD } from 'mol-util/param-definition';
-// import { ComplexRepresentation } from '../complex-representation';
-// import { StructureRepresentation } from '../representation';
-// import { Representation } from 'mol-repr/representation';
-// import { ThemeRegistryContext } from 'mol-theme/theme';
-// import { Structure } from 'mol-model/structure';
+import { CrossLinkRestraintVisual, CrossLinkRestraintParams } from '../visual/cross-link-restraint-cylinder';
+import { ParamDefinition as PD } from 'mol-util/param-definition';
+import { ComplexRepresentation } from '../complex-representation';
+import { StructureRepresentation, StructureRepresentationProvider } from '../representation';
+import { Representation, RepresentationContext, RepresentationParamsGetter } from 'mol-repr/representation';
+import { ThemeRegistryContext } from 'mol-theme/theme';
+import { Structure } from 'mol-model/structure';
+import { UnitKind, UnitKindOptions } from '../visual/util/common';
 
-// export const DistanceRestraintParams = {
-//     ...CrossLinkRestraintParams,
-// }
-// export function getDistanceRestraintParams(ctx: ThemeRegistryContext, structure: Structure) {
-//     return DistanceRestraintParams // TODO return copy
-// }
-// export type DistanceRestraintProps = PD.DefaultValues<typeof DistanceRestraintParams>
+const DistanceRestraintVisuals = {
+    'distance-restraint': (ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, CrossLinkRestraintParams>) => ComplexRepresentation('Cross-link restraint', ctx, getParams, CrossLinkRestraintVisual),
+}
 
-// export type DistanceRestraintRepresentation = StructureRepresentation<DistanceRestraintProps>
+export const DistanceRestraintParams = {
+    ...CrossLinkRestraintParams,
+    unitKinds: PD.MultiSelect<UnitKind>(['atomic', 'spheres'], UnitKindOptions),
+}
+export type DistanceRestraintParams = typeof DistanceRestraintParams
+export function getDistanceRestraintParams(ctx: ThemeRegistryContext, structure: Structure) {
+    return PD.clone(DistanceRestraintParams)
+}
 
-// export function DistanceRestraintRepresentation(defaultProps: DistanceRestraintProps): DistanceRestraintRepresentation {
-//     return Representation.createMulti('Distance restraint', defaultProps, [
-//         ComplexRepresentation('Cross-link restraint', defaultProps, CrossLinkRestraintVisual)
-//     ])
-// }
\ No newline at end of file
+export type DistanceRestraintRepresentation = StructureRepresentation<DistanceRestraintParams>
+export function DistanceRestraintRepresentation(ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, DistanceRestraintParams>): DistanceRestraintRepresentation {
+    return Representation.createMulti('DistanceRestraint', ctx, getParams, DistanceRestraintVisuals as unknown as Representation.Def<Structure, DistanceRestraintParams>)
+}
+
+export const DistanceRestraintRepresentationProvider: StructureRepresentationProvider<typeof DistanceRestraintParams> = {
+    label: 'DistanceRestraint',
+    description: 'Displays cross-link distance restraints.',
+    factory: DistanceRestraintRepresentation,
+    getParams: getDistanceRestraintParams,
+    defaultValues: PD.getDefaultValues(DistanceRestraintParams),
+    defaultColorTheme: 'cross-link',
+    defaultSizeTheme: 'uniform'
+}
\ No newline at end of file
diff --git a/src/mol-repr/structure/representation/spacefill.ts b/src/mol-repr/structure/representation/spacefill.ts
index 09e13505a55a1b7b524df3516e183f6b4cd769d7..985f7ef36d29de4f07e5ce2f2057b43b7942d39b 100644
--- a/src/mol-repr/structure/representation/spacefill.ts
+++ b/src/mol-repr/structure/representation/spacefill.ts
@@ -19,7 +19,7 @@ const SpacefillVisuals = {
 
 export const SpacefillParams = {
     ...ElementSphereParams,
-    unitKinds: PD.MultiSelect<UnitKind>(['atomic', 'gaussians'], UnitKindOptions),
+    unitKinds: PD.MultiSelect<UnitKind>(['atomic', 'spheres'], UnitKindOptions),
 }
 export type SpacefillParams = typeof SpacefillParams
 export function getSpacefillParams(ctx: ThemeRegistryContext, structure: Structure) {