diff --git a/y2023/constants.h b/y2023/constants.h
index edcb794..64153af 100644
--- a/y2023/constants.h
+++ b/y2023/constants.h
@@ -9,6 +9,7 @@
 #include "frc971/control_loops/pose.h"
 #include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
 #include "y2023/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2023/control_loops/superstructure/arm/arm_constants.h"
 
 namespace y2023 {
 namespace constants {
@@ -51,6 +52,29 @@
            control_loops::drivetrain::kHighOutputRatio *
            control_loops::drivetrain::kWheelRadius;
   }
+  static constexpr double kProximalEncoderCountsPerRevolution() {
+    return 4096.0;
+  }
+  static constexpr double kProximalEncoderRatio() { return (15.0 / 95.0); }
+  static constexpr double kMaxProximalEncoderPulsesPerSecond() {
+    return control_loops::superstructure::arm::kArmConstants.free_speed /
+           (2.0 * M_PI) / control_loops::superstructure::arm::kArmConstants.g1 /
+           kProximalEncoderRatio() * kProximalEncoderCountsPerRevolution();
+  }
+  static constexpr double kProximalPotRatio() {
+    return (24.0 / 36.0) * (24.0 / 58.0) * (15.0 / 95.0);
+  }
+
+  static constexpr double kDistalEncoderCountsPerRevolution() { return 4096.0; }
+  static constexpr double kDistalEncoderRatio() { return (15.0 / 95.0); }
+  static constexpr double kMaxDistalEncoderPulsesPerSecond() {
+    return control_loops::superstructure::arm::kArmConstants.free_speed /
+           (2.0 * M_PI) / control_loops::superstructure::arm::kArmConstants.g2 /
+           kDistalEncoderRatio() * kProximalEncoderCountsPerRevolution();
+  }
+  static constexpr double kDistalPotRatio() {
+    return (24.0 / 36.0) * (18.0 / 66.0) * (15.0 / 95.0);
+  }
 
   struct PotConstants {
     ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
@@ -65,6 +89,14 @@
         subsystem_params;
     double potentiometer_offset;
   };
+
+  struct ArmJointConstants {
+    ::frc971::constants::PotAndAbsoluteEncoderZeroingConstants zeroing;
+    double potentiometer_offset;
+  };
+
+  ArmJointConstants arm_proximal;
+  ArmJointConstants arm_distal;
 };
 
 // Creates and returns a Values instance for the constants.
