diff --git a/package-lock.json b/package-lock.json
index 1dbc39950cb1b9c25718e2436ac18eb934f27ea3..4d591a55215d505271ecf6a6c0714d886142aa28 100644
Binary files a/package-lock.json and b/package-lock.json differ
diff --git a/package.json b/package.json
index 51a1e0b842517ba25f5e9cf53a73368624bfa235..613df0b682dd2ee7346eb67466e334a8db1bf254 100644
--- a/package.json
+++ b/package.json
@@ -106,7 +106,7 @@
     "style-loader": "^0.23.1",
     "ts-jest": "^23.10.5",
     "tslint": "^5.11.0",
-    "typescript": "^3.1.6",
+    "typescript": "^3.2.0",
     "uglify-js": "^3.4.9",
     "util.promisify": "^1.0.0",
     "webpack": "^4.26.1",
diff --git a/src/mol-model-props/rcsb/assembly-symmetry.ts b/src/mol-model-props/rcsb/assembly-symmetry.ts
index 8a97e66160bdd601f3b067082e91edce2c8337a5..cf3be851c3db7faa8265d527c3aa48dea8c054bc 100644
--- a/src/mol-model-props/rcsb/assembly-symmetry.ts
+++ b/src/mol-model-props/rcsb/assembly-symmetry.ts
@@ -116,21 +116,21 @@ function createDatabaseFromCif(model: Model): AssemblySymmetry.Database {
     if (model.sourceData.frame.categoryNames.includes('rcsb_assembly_symmetry_cluster')) {
         rcsb_assembly_symmetry_cluster = toTable(Schema.rcsb_assembly_symmetry_cluster, model.sourceData.frame.categories.rcsb_assembly_symmetry_cluster)
     } else {
-        rcsb_assembly_symmetry_cluster = CifCategory.empty
+        rcsb_assembly_symmetry_cluster = toTable(Schema.rcsb_assembly_symmetry_cluster, CifCategory.empty as any)
     }
 
     let rcsb_assembly_symmetry_cluster_member
     if (model.sourceData.frame.categoryNames.includes('rcsb_assembly_symmetry_cluster_member')) {
         rcsb_assembly_symmetry_cluster_member = toTable(Schema.rcsb_assembly_symmetry_cluster_member, model.sourceData.frame.categories.rcsb_assembly_symmetry_cluster_member)
     } else {
-        rcsb_assembly_symmetry_cluster_member = CifCategory.empty
+        rcsb_assembly_symmetry_cluster_member = toTable(Schema.rcsb_assembly_symmetry_cluster_member, CifCategory.empty as any)
     }
 
     let rcsb_assembly_symmetry_axis
     if (model.sourceData.frame.categoryNames.includes('rcsb_assembly_symmetry_axis')) {
         rcsb_assembly_symmetry_axis = toTable(Schema.rcsb_assembly_symmetry_axis, model.sourceData.frame.categories.rcsb_assembly_symmetry_axis)
     } else {
-        rcsb_assembly_symmetry_axis = CifCategory.empty
+        rcsb_assembly_symmetry_axis = toTable(Schema.rcsb_assembly_symmetry_axis, CifCategory.empty as any)
     }
 
     return _Database.ofTables('rcsb_assembly_symmetry', Schema, {
diff --git a/src/mol-repr/structure/complex-visual.ts b/src/mol-repr/structure/complex-visual.ts
index 2b7a8ba3957a5eb0c6f500d51b397ab2965bec41..189ec0b4e343ed1b04daf490163a8130a4c04591 100644
--- a/src/mol-repr/structure/complex-visual.ts
+++ b/src/mol-repr/structure/complex-visual.ts
@@ -26,6 +26,7 @@ import { Theme, createEmptyTheme } from 'mol-theme/theme';
 import { ColorTheme } from 'mol-theme/color';
 import { SizeTheme } from 'mol-theme/size';
 import { RenderableState } from 'mol-gl/renderable';
+import { UnitsParams } from './units-representation';
 
 export interface  ComplexVisual<P extends StructureParams> extends Visual<Structure, P> { }
 
@@ -214,7 +215,7 @@ export type ComplexMeshParams = typeof ComplexMeshParams
 export interface ComplexMeshVisualBuilder<P extends ComplexMeshParams> extends ComplexVisualBuilder<P, Mesh> { }
 
 export function ComplexMeshVisual<P extends ComplexMeshParams>(builder: ComplexMeshVisualBuilder<P>): ComplexVisual<P> {
-    return ComplexVisual({
+    return ComplexVisual<StructureMeshParams & UnitsParams>({
         ...builder,
         setUpdateState: (state: VisualUpdateState, newProps: PD.Values<P>, currentProps: PD.Values<P>, newTheme: Theme, currentTheme: Theme) => {
             builder.setUpdateState(state, newProps, currentProps, newTheme, currentTheme)
diff --git a/src/mol-repr/structure/units-visual.ts b/src/mol-repr/structure/units-visual.ts
index 385e97cadb5c3473a604c838143f5fd93d79c54c..87e06e3fc2c08ae18d72f3a08d10a970cd5d7d0b 100644
--- a/src/mol-repr/structure/units-visual.ts
+++ b/src/mol-repr/structure/units-visual.ts
@@ -49,9 +49,9 @@ interface UnitsVisualBuilder<P extends UnitsParams, G extends Geometry> {
 interface UnitsVisualGeometryBuilder<P extends UnitsParams, G extends Geometry> extends UnitsVisualBuilder<P, G> {
     createEmptyGeometry(geometry?: G): G
     createRenderObject(group: Unit.SymmetryGroup, geometry: Geometry, locationIt: LocationIterator, theme: Theme, currentProps: PD.Values<P>): UnitsRenderObject
-    updateValues(values: RenderableValues, newProps: PD.Values<P>): void
+    updateValues(values: RenderableValues, newProps: Partial<PD.Values<P>>): void
     updateBoundingSphere(values: RenderableValues, geometry: Geometry): void
-    updateRenderableState(state: RenderableState, props: PD.Values<P>): void
+    updateRenderableState(state: RenderableState, props: Partial<PD.Values<P>>): void
 }
 
 export function UnitsVisual<P extends UnitsParams>(builder: UnitsVisualGeometryBuilder<P, Geometry>): UnitsVisual<P> {
@@ -256,7 +256,7 @@ export type UnitsMeshParams = typeof UnitsMeshParams
 export interface UnitsMeshVisualBuilder<P extends UnitsMeshParams> extends UnitsVisualBuilder<P, Mesh> { }
 
 export function UnitsMeshVisual<P extends UnitsMeshParams>(builder: UnitsMeshVisualBuilder<P>): UnitsVisual<P> {
-    return UnitsVisual({
+    return UnitsVisual<StructureMeshParams & UnitsParams>({
         ...builder,
         setUpdateState: (state: VisualUpdateState, newProps: PD.Values<P>, currentProps: PD.Values<P>, newTheme: Theme, currentTheme: Theme) => {
             builder.setUpdateState(state, newProps, currentProps, newTheme, currentTheme)
@@ -280,7 +280,7 @@ export type UnitsPointsParams = typeof UnitsPointsParams
 export interface UnitsPointVisualBuilder<P extends UnitsPointsParams> extends UnitsVisualBuilder<P, Points> { }
 
 export function UnitsPointsVisual<P extends UnitsPointsParams>(builder: UnitsPointVisualBuilder<P>): UnitsVisual<P> {
-    return UnitsVisual({
+    return UnitsVisual<StructurePointsParams & UnitsParams>({
         ...builder,
         createEmptyGeometry: Points.createEmpty,
         createRenderObject: createUnitsPointsRenderObject,
@@ -304,7 +304,7 @@ export type UnitsLinesParams = typeof UnitsLinesParams
 export interface UnitsLinesVisualBuilder<P extends UnitsLinesParams> extends UnitsVisualBuilder<P, Lines> { }
 
 export function UnitsLinesVisual<P extends UnitsLinesParams>(builder: UnitsLinesVisualBuilder<P>): UnitsVisual<P> {
-    return UnitsVisual({
+    return UnitsVisual<StructureLinesParams & UnitsParams>({
         ...builder,
         createEmptyGeometry: Lines.createEmpty,
         createRenderObject: createUnitsLinesRenderObject,
@@ -328,7 +328,7 @@ export type UnitsDirectVolumeParams = typeof UnitsDirectVolumeParams
 export interface UnitsDirectVolumeVisualBuilder<P extends UnitsDirectVolumeParams> extends UnitsVisualBuilder<P, DirectVolume> { }
 
 export function UnitsDirectVolumeVisual<P extends UnitsDirectVolumeParams>(builder: UnitsDirectVolumeVisualBuilder<P>): UnitsVisual<P> {
-    return UnitsVisual({
+    return UnitsVisual<StructureDirectVolumeParams & UnitsParams>({
         ...builder,
         createEmptyGeometry: DirectVolume.createEmpty,
         createRenderObject: createUnitsDirectVolumeRenderObject,
diff --git a/src/mol-util/color/color.ts b/src/mol-util/color/color.ts
index 3a1d2434757bee80dbe1808233ff247c7f075fdf..ec15dbf3e49fd23fa2b52e585d0605b9984cc39e 100644
--- a/src/mol-util/color/color.ts
+++ b/src/mol-util/color/color.ts
@@ -80,7 +80,7 @@ export namespace Color {
 }
 
 export type ColorTable<T extends { [k: string]: number[] }> = { [k in keyof T]: Color[] }
-export function ColorTable<T extends { [k: string]: number[] }>(o: T) { return o as ColorTable<T> }
+export function ColorTable<T extends { [k: string]: number[] }>(o: T) { return o as unknown as ColorTable<T> }
 
 export type ColorMap<T extends { [k: string]: number }> = { [k in keyof T]: Color }
-export function ColorMap<T extends { [k: string]: number }>(o: T) { return o as ColorMap<T> }
\ No newline at end of file
+export function ColorMap<T extends { [k: string]: number }>(o: T) { return o as unknown as ColorMap<T> }
\ No newline at end of file