diff --git a/y2024/control_loops/superstructure/superstructure.cc b/y2024/control_loops/superstructure/superstructure.cc
index daede87..6412c27 100644
--- a/y2024/control_loops/superstructure/superstructure.cc
+++ b/y2024/control_loops/superstructure/superstructure.cc
@@ -43,9 +43,6 @@
           event_loop->MakeFetcher<aos::JoystickState>("/aos")),
       intake_pivot_(robot_constants_->common()->intake_pivot(),
                     robot_constants_->robot()->intake_constants()),
-      climber_(
-          robot_constants_->common()->climber(),
-          robot_constants_->robot()->climber_constants()->zeroing_constants()),
       shooter_(event_loop, robot_constants_),
       extend_(
           robot_constants_->common()->extend(),
@@ -71,7 +68,6 @@
   if (WasReset()) {
     AOS_LOG(ERROR, "WPILib reset, restarting\n");
     intake_pivot_.Reset();
-    climber_.Reset();
     shooter_.Reset();
     extend_.Reset();
   }
@@ -84,45 +80,6 @@
   transfer_debouncer_.Update(position->transfer_beambreak(), timestamp);
   const bool transfer_beambreak = transfer_debouncer_.state();
 
-  // Handle Climber Goal separately from main superstructure state machine
-  double climber_position =
-      robot_constants_->common()->climber_set_points()->retract();
-
-  double climber_velocity = robot_constants_->common()
-                                ->climber()
-                                ->default_profile_params()
-                                ->max_velocity();
-  const double climber_accel = robot_constants_->common()
-                                   ->climber()
-                                   ->default_profile_params()
-                                   ->max_acceleration();
-
-  if (unsafe_goal != nullptr) {
-    switch (unsafe_goal->climber_goal()) {
-      case ClimberGoal::FULL_EXTEND:
-        climber_position =
-            robot_constants_->common()->climber_set_points()->full_extend();
-        // The climber can go reasonably fast when extending out.
-        climber_velocity = 0.5;
-
-        if (unsafe_goal->slow_climber()) {
-          climber_velocity = 0.01;
-        }
-        break;
-      case ClimberGoal::RETRACT:
-        climber_position =
-            robot_constants_->common()->climber_set_points()->retract();
-        // Keep the climber slower while retracting.
-        climber_velocity = 0.1;
-        break;
-      case ClimberGoal::STOWED:
-        climber_position =
-            robot_constants_->common()->climber_set_points()->stowed();
-        // Keep the climber slower while retracting.
-        climber_velocity = 0.1;
-    }
-  }
-
   // If we started off preloaded, skip to the ready state.
   if (unsafe_goal != nullptr && unsafe_goal->shooter_goal() &&
       unsafe_goal->shooter_goal()->preloaded()) {
@@ -554,31 +511,6 @@
                               : 0.0),
   });
 
-  aos::FlatbufferFixedAllocatorArray<
-      frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemGoal, 512>
-      climber_goal_buffer;
-
-  {
-    flatbuffers::FlatBufferBuilder *climber_fbb = climber_goal_buffer.fbb();
-    flatbuffers::Offset<frc971::ProfileParameters> climber_profile =
-        frc971::CreateProfileParameters(*climber_fbb, climber_velocity,
-                                        climber_accel);
-
-    climber_goal_buffer.Finish(
-        frc971::control_loops::
-            CreateStaticZeroingSingleDOFProfiledSubsystemGoal(
-                *climber_fbb, climber_position, climber_profile));
-  }
-
-  const frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemGoal
-      *climber_goal = &climber_goal_buffer.message();
-
-  const flatbuffers::Offset<PotAndAbsoluteEncoderProfiledJointStatus>
-      climber_status_offset = climber_.Iterate(
-          climber_goal, position->climber(),
-          output != nullptr ? &output_struct.climber_voltage : nullptr,
-          status->fbb());
-
   double max_intake_pivot_position = 0;
   double min_intake_pivot_position = 0;
   double max_extend_position = 0;
@@ -663,10 +595,11 @@
     output_struct.extend_voltage = 0.0;
   }
 
-  // Zero out climber voltage if "disable_climber" is true
-  if (robot_constants_->robot()->disable_climber()) {
-    output_struct.climber_voltage = 0.0;
-  }
+  // Ignore climber voltage goal if "disable_climber" is true
+  output_struct.climber_voltage =
+      (!robot_constants_->robot()->disable_climber() && unsafe_goal != nullptr)
+          ? unsafe_goal->climber_goal_voltage()
+          : 0.0;
 
   if (output) {
     output->CheckOk(output->Send(Output::Pack(*output->fbb(), &output_struct)));
@@ -674,17 +607,16 @@
 
   Status::Builder status_builder = status->MakeBuilder<Status>();
 
-  const bool zeroed = intake_pivot_.zeroed() && climber_.zeroed() &&
-                      shooter_.zeroed() && extend_.zeroed();
-  const bool estopped = intake_pivot_.estopped() || climber_.estopped() ||
-                        shooter_.estopped() || extend_.estopped();
+  const bool zeroed =
+      intake_pivot_.zeroed() && shooter_.zeroed() && extend_.zeroed();
+  const bool estopped =
+      intake_pivot_.estopped() || shooter_.estopped() || extend_.estopped();
 
   status_builder.add_zeroed(zeroed);
   status_builder.add_estopped(estopped);
   status_builder.add_intake_roller(intake_roller_state);
   status_builder.add_intake_pivot(intake_pivot_status_offset);
   status_builder.add_transfer_roller(transfer_roller_status);
-  status_builder.add_climber(climber_status_offset);
   status_builder.add_shooter(shooter_status_offset);
   status_builder.add_collided(collided);
   status_builder.add_extend_roller(extend_roller_status);
diff --git a/y2024/control_loops/superstructure/superstructure.h b/y2024/control_loops/superstructure/superstructure.h
index a1bf841..6286615 100644
--- a/y2024/control_loops/superstructure/superstructure.h
+++ b/y2024/control_loops/superstructure/superstructure.h
@@ -40,10 +40,6 @@
     return intake_pivot_;
   }
 
-  inline const PotAndAbsoluteEncoderSubsystem &climber() const {
-    return climber_;
-  }
-
   inline const Shooter &shooter() const { return shooter_; }
   inline const PotAndAbsoluteEncoderSubsystem &extend() const {
     return extend_;
@@ -86,7 +82,6 @@
       aos::monotonic_clock::time_point::min();
 
   AbsoluteEncoderSubsystem intake_pivot_;
-  PotAndAbsoluteEncoderSubsystem climber_;
 
   Shooter shooter_;
 
diff --git a/y2024/control_loops/superstructure/superstructure_goal.fbs b/y2024/control_loops/superstructure/superstructure_goal.fbs
index abfd405..c217bcc 100644
--- a/y2024/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2024/control_loops/superstructure/superstructure_goal.fbs
@@ -60,13 +60,23 @@
 table Goal {
     intake_goal:IntakeGoal = NONE (id: 0);
     intake_pivot:IntakePivotGoal = UP (id: 5);
+
+    // Deprecated since climber no longer has an encoder
     climber_goal:ClimberGoal (id: 1);
+
+    // Voltage we want to give to climber
+    // Positive voltage is for climber up
+    // Negative voltage is for climber down
+    climber_goal_voltage:double = 0.0 (id: 8);
+
     shooter_goal:ShooterGoal (id: 2);
     note_goal:NoteGoal (id: 3);
     fire: bool (id: 4);
 
     // Tells the climber to go absurdly slow on FULL_EXTEND
-    slow_climber: bool = false (id: 6);
+    // Deprecated now because we take care of this through 
+    // climber_goal_voltage
+    slow_climber: bool = false (id: 6, deprecated);
 
     // Spit on the extend motors
     spit_extend: bool = false (id: 7);
diff --git a/y2024/control_loops/superstructure/superstructure_lib_test.cc b/y2024/control_loops/superstructure/superstructure_lib_test.cc
index a4e47d7..5544fc0 100644
--- a/y2024/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2024/control_loops/superstructure/superstructure_lib_test.cc
@@ -15,7 +15,6 @@
 #include "y2024/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 #include "y2024/control_loops/superstructure/altitude/altitude_plant.h"
 #include "y2024/control_loops/superstructure/catapult/catapult_plant.h"
-#include "y2024/control_loops/superstructure/climber/climber_plant.h"
 #include "y2024/control_loops/superstructure/extend/extend_plant.h"
 #include "y2024/control_loops/superstructure/intake_pivot/intake_pivot_plant.h"
 #include "y2024/control_loops/superstructure/superstructure.h"
@@ -81,26 +80,6 @@
                 ->intake_constants()
                 ->measured_absolute_position(),
             dt_),
-        climber_(new CappedTestPlant(climber::MakeClimberPlant()),
-                 PositionSensorSimulator(simulated_robot_constants->robot()
-                                             ->climber_constants()
-                                             ->zeroing_constants()
-                                             ->one_revolution_distance()),
-                 {.subsystem_params =
-                      {simulated_robot_constants->common()->climber(),
-                       simulated_robot_constants->robot()
-                           ->climber_constants()
-                           ->zeroing_constants()},
-                  .potentiometer_offset = simulated_robot_constants->robot()
-                                              ->climber_constants()
-                                              ->potentiometer_offset()},
-                 frc971::constants::Range::FromFlatbuffer(
-                     simulated_robot_constants->common()->climber()->range()),
-                 simulated_robot_constants->robot()
-                     ->climber_constants()
-                     ->zeroing_constants()
-                     ->measured_absolute_position(),
-                 dt_),
         catapult_(new CappedTestPlant(catapult::MakeCatapultPlant()),
                   PositionSensorSimulator(simulated_robot_constants->robot()
                                               ->catapult_constants()
@@ -185,10 +164,6 @@
         frc971::constants::Range::FromFlatbuffer(
             simulated_robot_constants->common()->intake_pivot()->range())
             .middle());
-    climber_.InitializePosition(
-        frc971::constants::Range::FromFlatbuffer(
-            simulated_robot_constants->common()->climber()->range())
-            .middle());
     catapult_.InitializePosition(
         frc971::constants::Range::FromFlatbuffer(
             simulated_robot_constants->common()->catapult()->range())
@@ -213,8 +188,6 @@
                 superstructure_output_fetcher_->intake_pivot_voltage(),
                 superstructure_status_fetcher_->intake_pivot());
 
-            climber_.Simulate(superstructure_output_fetcher_->climber_voltage(),
-                              superstructure_status_fetcher_->climber());
             catapult_.Simulate(
                 superstructure_output_fetcher_->catapult_voltage(),
                 superstructure_status_fetcher_->shooter()->catapult());
@@ -246,14 +219,8 @@
     flatbuffers::Offset<frc971::AbsolutePosition> intake_pivot_offset =
         intake_pivot_.encoder()->GetSensorValues(&intake_pivot_builder);
 
-    frc971::PotAndAbsolutePosition::Builder climber_builder =
-        builder.MakeBuilder<frc971::PotAndAbsolutePosition>();
-
-    flatbuffers::Offset<frc971::PotAndAbsolutePosition> climber_offset =
-        climber_.encoder()->GetSensorValues(&climber_builder);
     frc971::PotAndAbsolutePosition::Builder catapult_builder =
         builder.MakeBuilder<frc971::PotAndAbsolutePosition>();
-
     flatbuffers::Offset<frc971::PotAndAbsolutePosition> catapult_offset =
         catapult_.encoder()->GetSensorValues(&catapult_builder);
 
@@ -281,7 +248,6 @@
     position_builder.add_catapult(catapult_offset);
     position_builder.add_altitude(altitude_offset);
     position_builder.add_turret(turret_offset);
-    position_builder.add_climber(climber_offset);
     position_builder.add_extend(extend_offset);
 
     CHECK_EQ(builder.Send(position_builder.Finish()),
@@ -302,7 +268,6 @@
   PotAndAbsoluteEncoderSimulator *catapult() { return &catapult_; }
   PotAndAbsoluteEncoderSimulator *altitude() { return &altitude_; }
   PotAndAbsoluteEncoderSimulator *turret() { return &turret_; }
-  PotAndAbsoluteEncoderSimulator *climber() { return &climber_; }
 
   PotAndAbsoluteEncoderSimulator *extend() { return &extend_; }
 
@@ -321,7 +286,6 @@
   bool transfer_beambreak_;
 
   AbsoluteEncoderSimulator intake_pivot_;
-  PotAndAbsoluteEncoderSimulator climber_;
   PotAndAbsoluteEncoderSimulator catapult_;
   PotAndAbsoluteEncoderSimulator altitude_;
   PotAndAbsoluteEncoderSimulator turret_;
@@ -459,26 +423,6 @@
       EXPECT_EQ(superstructure_output_fetcher_->intake_roller_voltage(), 0.0);
     }
 
-    if (superstructure_goal_fetcher_->has_climber_goal()) {
-      double set_point =
-          simulated_robot_constants_->common()->climber_set_points()->retract();
-
-      if (superstructure_goal_fetcher_->climber_goal() ==
-          ClimberGoal::FULL_EXTEND) {
-        set_point = simulated_robot_constants_->common()
-                        ->climber_set_points()
-                        ->full_extend();
-      }
-
-      if (superstructure_goal_fetcher_->climber_goal() == ClimberGoal::STOWED) {
-        set_point = simulated_robot_constants_->common()
-                        ->climber_set_points()
-                        ->stowed();
-      }
-      EXPECT_NEAR(set_point,
-                  superstructure_status_fetcher_->climber()->position(), 0.001);
-    }
-
     if (superstructure_status_fetcher_->has_uncompleted_note_goal()) {
       double set_point = simulated_robot_constants_->common()
                              ->extend_set_points()
@@ -623,7 +567,6 @@
         shooter_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_climber_goal(ClimberGoal::RETRACT);
     goal_builder.add_shooter_goal(shooter_goal_offset);
     goal_builder.add_intake_goal(IntakeGoal::NONE);
     goal_builder.add_intake_pivot(IntakePivotGoal::UP);
@@ -675,7 +618,6 @@
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_intake_pivot(IntakePivotGoal::DOWN);
-    goal_builder.add_climber_goal(ClimberGoal::FULL_EXTEND);
     goal_builder.add_shooter_goal(shooter_goal_offset);
     goal_builder.add_note_goal(NoteGoal::NONE);
 
@@ -726,7 +668,6 @@
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_intake_goal(IntakeGoal::INTAKE);
-    goal_builder.add_climber_goal(ClimberGoal::FULL_EXTEND);
     goal_builder.add_shooter_goal(shooter_goal_offset);
     goal_builder.add_note_goal(NoteGoal::AMP);
 
@@ -772,7 +713,6 @@
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_intake_goal(IntakeGoal::NONE);
-    goal_builder.add_climber_goal(ClimberGoal::RETRACT);
     goal_builder.add_shooter_goal(shooter_goal_offset);
     goal_builder.add_note_goal(NoteGoal::NONE);
 
@@ -798,9 +738,6 @@
             superstructure_.intake_pivot().state());
 
   EXPECT_EQ(PotAndAbsoluteEncoderSubsystem::State::RUNNING,
-            superstructure_.climber().state());
-
-  EXPECT_EQ(PotAndAbsoluteEncoderSubsystem::State::RUNNING,
             superstructure_.shooter().turret().state());
 
   EXPECT_EQ(PotAndAbsoluteEncoderSubsystem::State::RUNNING,
@@ -1661,8 +1598,6 @@
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
 
-    goal_builder.add_climber_goal(ClimberGoal::STOWED);
-
     ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
@@ -1675,8 +1610,6 @@
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
 
-    goal_builder.add_climber_goal(ClimberGoal::FULL_EXTEND);
-
     ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
@@ -1689,8 +1622,6 @@
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
 
-    goal_builder.add_climber_goal(ClimberGoal::RETRACT);
-
     ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
diff --git a/y2024/control_loops/superstructure/superstructure_position.fbs b/y2024/control_loops/superstructure/superstructure_position.fbs
index b1facba..6905fcf 100644
--- a/y2024/control_loops/superstructure/superstructure_position.fbs
+++ b/y2024/control_loops/superstructure/superstructure_position.fbs
@@ -28,11 +28,14 @@
     // True means there is a game piece in the transfer.
     transfer_beambreak:bool (id: 4);
 
-    // Values of the encoder and potentiometer at the climber.
+    // Deprecated since climber no longer has an encoder
+    deprecated_climber:frc971.PotAndAbsolutePosition (id: 5, deprecated);
+
+    // Value of the potentiometer at the climber.
     // Zero is fully extended, with top of the highest slider aligned with the
     // caps on the tubes for the climber.
     // Positive is more extended.
-    climber:frc971.PotAndAbsolutePosition (id: 5);
+    climber:frc971.RelativePosition (id: 9);
 
     // True if there is a game piece in the catapult
     catapult_beambreak:bool (id: 6);
diff --git a/y2024/control_loops/superstructure/superstructure_status.fbs b/y2024/control_loops/superstructure/superstructure_status.fbs
index 0b30edd..7a508dd 100644
--- a/y2024/control_loops/superstructure/superstructure_status.fbs
+++ b/y2024/control_loops/superstructure/superstructure_status.fbs
@@ -140,7 +140,9 @@
   transfer_roller:TransferRollerStatus (id: 5);
 
   // Estimated angle and angular velocitiy of the climber.
-  climber:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 6);
+  // Deprecated now because climber no longer has an encoder 
+  // and climber status is not used
+  climber:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 6, deprecated);
 
   // Status of the subsytems involved in the shooter
   shooter:ShooterStatus (id: 7);
