diff --git a/y2014/actors/autonomous_actor.cc b/y2014/actors/autonomous_actor.cc
index e241d11..d4818e2 100644
--- a/y2014/actors/autonomous_actor.cc
+++ b/y2014/actors/autonomous_actor.cc
@@ -33,6 +33,8 @@
     ::frc971::autonomous::AutonomousActionQueueGroup *s)
     : frc971::autonomous::BaseAutonomousActor(
           event_loop, s, control_loops::GetDrivetrainConfig()),
+      auto_mode_fetcher_(event_loop->MakeFetcher<::y2014::sensors::AutoMode>(
+          ".y2014.sensors.auto_mode")),
       hot_goal_fetcher_(
           event_loop->MakeFetcher<::y2014::HotGoal>(".y2014.hot_goal")) {}
 
@@ -239,18 +241,17 @@
   LOG(INFO, "Handling auto mode\n");
 
   AutoVersion auto_version;
-  ::y2014::sensors::auto_mode.FetchLatest();
-  if (!::y2014::sensors::auto_mode.get()) {
+  auto_mode_fetcher_.Fetch();
+  if (!auto_mode_fetcher_.get()) {
     LOG(WARNING, "not sure which auto mode to use\n");
     auto_version = AutoVersion::kStraight;
   } else {
     static const double kSelectorMin = 0.2, kSelectorMax = 4.4;
 
     const double kSelectorStep = (kSelectorMax - kSelectorMin) / 3.0;
-    if (::y2014::sensors::auto_mode->voltage < kSelectorStep + kSelectorMin) {
+    if (auto_mode_fetcher_->voltage < kSelectorStep + kSelectorMin) {
       auto_version = AutoVersion::kSingleHot;
-    } else if (::y2014::sensors::auto_mode->voltage <
-               2 * kSelectorStep + kSelectorMin) {
+    } else if (auto_mode_fetcher_->voltage < 2 * kSelectorStep + kSelectorMin) {
       auto_version = AutoVersion::kStraight;
     } else {
       auto_version = AutoVersion::kDoubleHot;
diff --git a/y2014/actors/autonomous_actor.h b/y2014/actors/autonomous_actor.h
index 47195b5..8439151 100644
--- a/y2014/actors/autonomous_actor.h
+++ b/y2014/actors/autonomous_actor.h
@@ -9,6 +9,7 @@
 #include "frc971/autonomous/base_autonomous_actor.h"
 #include "frc971/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/control_loops/drivetrain/drivetrain_config.h"
+#include "y2014/queues/auto_mode.q.h"
 #include "y2014/queues/hot_goal.q.h"
 
 namespace y2014 {
@@ -37,6 +38,7 @@
 
   bool WaitUntilClawDone();
 
+  ::aos::Fetcher<::y2014::sensors::AutoMode> auto_mode_fetcher_;
   ::aos::Fetcher<::y2014::HotGoal> hot_goal_fetcher_;
 };
 
diff --git a/y2014/queues/auto_mode.q b/y2014/queues/auto_mode.q
index 49c6192..b07f526 100644
--- a/y2014/queues/auto_mode.q
+++ b/y2014/queues/auto_mode.q
@@ -1,6 +1,7 @@
 package y2014.sensors;
 
+// Published on ".y2014.sensors.auto_mode"
 message AutoMode {
+  // Voltage of the analog auto selector knob.
 	double voltage;
 };
-queue AutoMode auto_mode;
diff --git a/y2014/wpilib_interface.cc b/y2014/wpilib_interface.cc
index 3bc5e39..c9d15dd 100644
--- a/y2014/wpilib_interface.cc
+++ b/y2014/wpilib_interface.cc
@@ -119,7 +119,9 @@
 class SensorReader : public ::frc971::wpilib::SensorReader {
  public:
   SensorReader(::aos::EventLoop *event_loop)
-      : ::frc971::wpilib::SensorReader(event_loop) {
+      : ::frc971::wpilib::SensorReader(event_loop),
+        auto_mode_sender_(event_loop->MakeSender<::y2014::sensors::AutoMode>(
+            ".y2014.sensors.auto_mode")) {
     // Set it to filter out anything shorter than 1/4 of the minimum pulse width
     // we should ever see.
     UpdateMediumEncoderFilterHz(kMaximumEncoderPulsesPerSecond);
@@ -265,9 +267,11 @@
       drivetrain_message.Send();
     }
 
-    ::y2014::sensors::auto_mode.MakeWithBuilder()
-        .voltage(auto_selector_analog_->GetVoltage())
-        .Send();
+    {
+      auto auto_mode_message = auto_mode_sender_.MakeMessage();
+      auto_mode_message->voltage = auto_selector_analog_->GetVoltage();
+      auto_mode_message.Send();
+    }
   }
 
   void RunDmaIteration() {
@@ -390,6 +394,8 @@
         shooter_translate(counter->last_negative_encoder_value());
   }
 
+  ::aos::Sender<::y2014::sensors::AutoMode> auto_mode_sender_;
+
   ::std::unique_ptr<AnalogInput> auto_selector_analog_;
 
   ::std::unique_ptr<AnalogInput> low_left_drive_hall_;
