diff --git a/src/mol-state/state/builder.ts b/src/mol-state/state/builder.ts
index ec0bab0c3c2e4c245a4c614b39d4fd912adc736a..824cf3561eb8af52533f44bab4c222f581d42669 100644
--- a/src/mol-state/state/builder.ts
+++ b/src/mol-state/state/builder.ts
@@ -9,6 +9,7 @@ import { TransientTree } from '../tree/transient';
 import { StateObject, StateObjectCell } from '../object';
 import { StateTransform } from '../transform';
 import { StateTransformer } from '../transformer';
+import { State } from 'mol-state/state';
 
 export { StateBuilder }
 
@@ -24,7 +25,7 @@ namespace StateBuilder {
         lastUpdate?: StateTransform.Ref
     }
 
-    interface State {
+    interface BuildState {
         tree: TransientTree,
         editInfo: EditInfo
     }
@@ -38,7 +39,7 @@ namespace StateBuilder {
     }
 
     export class Root implements StateBuilder {
-        private state: State;
+        private state: BuildState;
         get editInfo() { return this.state.editInfo; }
 
         to<A extends StateObject>(ref: StateTransform.Ref) { return new To<A>(this.state, ref, this); }
@@ -90,8 +91,30 @@ namespace StateBuilder {
             return new To(this.state, t.ref, this.root);
         }
 
+        /**
+         * Updates a transform in an instantiated tree, passing the transform's source into the providers
+         *
+         * This only works if the transform source is NOT updated by the builder. Use at own discression.
+         */
+        updateInState<T extends StateTransformer<any, A, any>>(transformer: T, state: State, provider: (old: StateTransformer.Params<T>, a: StateTransformer.From<T>) => StateTransformer.Params<T>): Root {
+            const old = this.state.tree.transforms.get(this.ref)!;
+            const cell = state.cells.get(this.ref);
+            if (!cell || !cell.sourceRef) throw new Error('Source cell is not present in the tree.');
+            const parent = state.cells.get(cell.sourceRef);
+            if (!parent || !parent.obj) throw new Error('Parent cell is not present or computed.');
+
+            const params = provider(old.params as any, parent.obj as any);
+
+            if (this.state.tree.setParams(this.ref, params)) {
+                this.editInfo.count++;
+                this.editInfo.lastUpdate = this.ref;
+            }
+
+            return this.root;
+        }
+
         update<T extends StateTransformer<any, A, any>>(transformer: T, params: (old: StateTransformer.Params<T>) => StateTransformer.Params<T>): Root
-        update(params: any): Root
+        update<T extends StateTransformer<any, A, any> = StateTransformer<any, A, any>>(params: StateTransformer.Params<T>): Root
         update<T extends StateTransformer<any, A, any>>(paramsOrTransformer: T, provider?: (old: StateTransformer.Params<T>) => StateTransformer.Params<T>) {
             let params: any;
             if (provider) {
@@ -115,7 +138,7 @@ namespace StateBuilder {
 
         getTree(): StateTree { return this.state.tree.asImmutable(); }
 
-        constructor(private state: State, ref: StateTransform.Ref, private root: Root) {
+        constructor(private state: BuildState, ref: StateTransform.Ref, private root: Root) {
             this.ref = ref;
             if (!this.state.tree.transforms.has(ref)) {
                 throw new Error(`Could not find node '${ref}'.`);
diff --git a/src/servers/model/server/query.ts b/src/servers/model/server/query.ts
index f1079596487273caec14432f1fbbc0afc7274063..a9cd4c754a90e9d56ab0c23554feee44b589673e 100644
--- a/src/servers/model/server/query.ts
+++ b/src/servers/model/server/query.ts
@@ -30,7 +30,7 @@ const perf = new PerformanceMonitor();
 let _propertyProvider: ModelPropertiesProvider;
 function propertyProvider() {
     if (_propertyProvider) return _propertyProvider;
-    _propertyProvider = createModelPropertiesProviderFromConfig();
+    _propertyProvider = createModelPropertiesProviderFromConfig() || (() => []);
     return _propertyProvider;
 }
 
@@ -156,7 +156,7 @@ const _model_server_stats_fields: CifField<number, Stats>[] = [
 
 const _model_server_result: CifWriter.Category<Job> = {
     name: 'model_server_result',
-    instance: (job) => CifWriter.categoryInstance(_model_server_result_fields,{ data: job, rowCount: 1 })
+    instance: (job) => CifWriter.categoryInstance(_model_server_result_fields, { data: job, rowCount: 1 })
 };
 
 const _model_server_error: CifWriter.Category<string> = {