diff --git a/src/droplets/vca_droplet.cpp b/src/droplets/vca_droplet.cpp
index 9173a8d..0a8c77a 100644
--- a/src/droplets/vca_droplet.cpp
+++ b/src/droplets/vca_droplet.cpp
@@ -4,31 +4,7 @@ VCADroplet::VCADroplet(DaisyPatch* m_patch,
 		       DropletState m_state) :
   Droplet(m_patch,
 	  m_state) {
-  switch (GetState()) {
-  default:
-  case DropletState::kFull:
-    vca[0].Init(Patch()->controls[Patch()->CTRL_1],
-		0.0, 1.0f, Parameter::LINEAR);
-    vca[1].Init(Patch()->controls[Patch()->CTRL_2],
-		0.0, 1.0f, Parameter::LINEAR);
-    vca[2].Init(Patch()->controls[Patch()->CTRL_3],
-		0.0, 1.0f, Parameter::LINEAR);
-    vca[3].Init(Patch()->controls[Patch()->CTRL_4],
-		0.0, 1.0f, Parameter::LINEAR);
-    break;
-  case DropletState::kLeft:
-    vca[0].Init(Patch()->controls[Patch()->CTRL_1],
-		0.0, 1.0f, Parameter::LINEAR);
-    vca[1].Init(Patch()->controls[Patch()->CTRL_2],
-		0.0, 1.0f, Parameter::LINEAR);
-    break;
-  case DropletState::kRight:
-    vca[2].Init(Patch()->controls[Patch()->CTRL_3],
-		0.0, 1.0f, Parameter::LINEAR);
-    vca[3].Init(Patch()->controls[Patch()->CTRL_4],
-		0.0, 1.0f, Parameter::LINEAR);
-    break;
-  }
+  SetControls();
 }
 
 VCADroplet::~VCADroplet() {}
@@ -90,4 +66,34 @@ void VCADroplet::Draw() {
   DrawName("VCA");
 }
 
-void VCADroplet::UpdateStateCallback() {}
+void VCADroplet::UpdateStateCallback() {
+  SetControls();
+}
+
+void VCADroplet::SetControls() {
+  switch (GetState()) {
+  default:
+  case DropletState::kFull:
+    vca[0].Init(Patch()->controls[Patch()->CTRL_1],
+		0.0, 1.0f, Parameter::LINEAR);
+    vca[1].Init(Patch()->controls[Patch()->CTRL_2],
+		0.0, 1.0f, Parameter::LINEAR);
+    vca[2].Init(Patch()->controls[Patch()->CTRL_3],
+		0.0, 1.0f, Parameter::LINEAR);
+    vca[3].Init(Patch()->controls[Patch()->CTRL_4],
+		0.0, 1.0f, Parameter::LINEAR);
+    break;
+  case DropletState::kLeft:
+    vca[0].Init(Patch()->controls[Patch()->CTRL_1],
+		0.0, 1.0f, Parameter::LINEAR);
+    vca[1].Init(Patch()->controls[Patch()->CTRL_2],
+		0.0, 1.0f, Parameter::LINEAR);
+    break;
+  case DropletState::kRight:
+    vca[2].Init(Patch()->controls[Patch()->CTRL_3],
+		0.0, 1.0f, Parameter::LINEAR);
+    vca[3].Init(Patch()->controls[Patch()->CTRL_4],
+		0.0, 1.0f, Parameter::LINEAR);
+    break;
+  }
+}
diff --git a/src/droplets/vca_droplet.h b/src/droplets/vca_droplet.h
index 98b53b3..6323391 100644
--- a/src/droplets/vca_droplet.h
+++ b/src/droplets/vca_droplet.h
@@ -56,6 +56,11 @@ public:
    * Runs when droplet state is updated.
    */
   void UpdateStateCallback();
+
+  /*
+   * Set up the controls for the droplet.
+   */
+  void SetControls();
 };
 
 #endif // DROPLETS_VCA_DROPLET_H_