diff --git a/src/mol-plugin/behavior/behavior.ts b/src/mol-plugin/behavior/behavior.ts
index 6da2a78161c86dd45d11dfd98e5b2ad775f7bc09..e42dabfdd62c0f18e2b182d19c32dc4fe1e66cf8 100644
--- a/src/mol-plugin/behavior/behavior.ts
+++ b/src/mol-plugin/behavior/behavior.ts
@@ -5,7 +5,7 @@
  */
 
 import { PluginStateTransform, PluginStateObject } from '../state/objects';
-import { Transformer } from 'mol-state';
+import { Transformer, Transform } from 'mol-state';
 import { Task } from 'mol-task';
 import { PluginContext } from 'mol-plugin/context';
 import { PluginCommand } from '../command';
@@ -16,7 +16,7 @@ import { shallowEqual } from 'mol-util';
 export { PluginBehavior }
 
 interface PluginBehavior<P = unknown> {
-    register(): void,
+    register(ref: Transform.Ref): void,
     unregister(): void,
 
     /** Update params in place. Optionally return a promise if it depends on an async action. */
diff --git a/src/mol-plugin/behavior/static/state.ts b/src/mol-plugin/behavior/static/state.ts
index 5a6e6be01b16ce3deaa39b639cfef7dc14b90100..af9541687760557e436bb8c23116f7b78b2bbfc1 100644
--- a/src/mol-plugin/behavior/static/state.ts
+++ b/src/mol-plugin/behavior/static/state.ts
@@ -28,7 +28,7 @@ export function registerDefault(ctx: PluginContext) {
 export function SyncBehaviors(ctx: PluginContext) {
     ctx.events.state.object.created.subscribe(o => {
         if (!SO.isBehavior(o.obj)) return;
-        o.obj.data.register();
+        o.obj.data.register(o.ref);
     });
 
     ctx.events.state.object.removed.subscribe(o => {
@@ -39,7 +39,7 @@ export function SyncBehaviors(ctx: PluginContext) {
     ctx.events.state.object.updated.subscribe(o => {
         if (o.action === 'recreate') {
             if (o.oldObj && SO.isBehavior(o.oldObj)) o.oldObj.data.unregister();
-            if (o.obj && SO.isBehavior(o.obj)) o.obj.data.register();
+            if (o.obj && SO.isBehavior(o.obj)) o.obj.data.register(o.ref);
         }
     });
 }