diff --git a/y2018/vision/vision_status.cc b/y2018/vision/vision_status.cc
index 2f358c5..fdd6ffe 100644
--- a/y2018/vision/vision_status.cc
+++ b/y2018/vision/vision_status.cc
@@ -1,13 +1,12 @@
 #include <netdb.h>
 
-#include "aos/events/shm-event-loop.h"
+#include "aos/events/shm_event_loop.h"
 #include "aos/init.h"
 #include "aos/logging/logging.h"
-#include "aos/logging/queue_logging.h"
 #include "aos/time/time.h"
 #include "aos/vision/events/udp.h"
 #include "y2018/vision.pb.h"
-#include "y2018/vision/vision.q.h"
+#include "y2018/vision/vision_generated.h"
 
 namespace y2018 {
 namespace vision {
@@ -15,23 +14,28 @@
 using aos::monotonic_clock;
 
 int Main() {
+  aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+      aos::configuration::ReadConfig("config.json");
+
   ::aos::events::RXUdpSocket video_rx(5001);
   char data[65507];
   ::y2018::VisionStatus status;
-  ::aos::ShmEventLoop event_loop;
-  ::aos::Sender<::y2018::vision::VisionStatus> vision_status_sender_ =
-      event_loop.MakeSender<::y2018::vision::VisionStatus>(
-          ".y2018.vision.vision_status");
+
+  ::aos::ShmEventLoop event_loop(&config.message());
+  ::aos::Sender<VisionStatus> vision_status_sender_ =
+      event_loop.MakeSender<VisionStatus>("/superstructure");
 
   while (true) {
     const ssize_t rx_size = video_rx.Recv(data, sizeof(data));
     if (rx_size > 0) {
       status.ParseFromArray(data, rx_size);
-      auto new_vision_status = vision_status_sender_.MakeMessage();
-      new_vision_status->high_frame_count = status.high_frame_count();
-      new_vision_status->low_frame_count = status.low_frame_count();
-      AOS_LOG_STRUCT(DEBUG, "vision", *new_vision_status);
-      if (!new_vision_status.Send()) {
+
+      auto builder = vision_status_sender_.MakeBuilder();
+      VisionStatus::Builder vision_status_builder =
+          builder.MakeBuilder<VisionStatus>();
+      vision_status_builder.add_high_frame_count(status.high_frame_count());
+      vision_status_builder.add_low_frame_count(status.low_frame_count());
+      if (!builder.Send(vision_status_builder.Finish())) {
         AOS_LOG(ERROR, "Failed to send vision information\n");
       }
     }
