diff --git a/y2020/BUILD b/y2020/BUILD
index a759681..63034ae 100644
--- a/y2020/BUILD
+++ b/y2020/BUILD
@@ -11,6 +11,9 @@
     data = [
         ":config",
     ],
+    dirs = [
+      "//y2020/actors:splines"
+    ],
     start_binaries = [
         "//aos/events/logging:logger_main",
         ":joystick_reader",
diff --git a/y2020/actors/BUILD b/y2020/actors/BUILD
index fee0196..434b8db 100644
--- a/y2020/actors/BUILD
+++ b/y2020/actors/BUILD
@@ -1,3 +1,5 @@
+load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+
 filegroup(
     name = "binaries.stripped",
     srcs = [
@@ -14,6 +16,24 @@
     visibility = ["//visibility:public"],
 )
 
+filegroup(
+    name = "spline_jsons",
+    srcs = glob([
+        "splines/*.json"
+        ]),
+    visibility = ["//visibility:public"],
+)
+
+aos_downloader_dir(
+    name = "splines",
+    srcs = [
+        ":spline_jsons",
+    ],
+    dir = "splines",
+    target_compatible_with = ["@platforms//os:linux"],
+    visibility = ["//visibility:public"],
+)
+
 cc_library(
     name = "autonomous_action_lib",
     srcs = [
diff --git a/y2020/actors/auto_splines.h b/y2020/actors/auto_splines.h
index 96f055f..5ea1748 100644
--- a/y2020/actors/auto_splines.h
+++ b/y2020/actors/auto_splines.h
@@ -2,6 +2,7 @@
 #define y2020_ACTORS_AUTO_SPLINES_H_
 
 #include "aos/events/event_loop.h"
+#include "aos/flatbuffer_merge.h"
 #include "aos/robot_state/joystick_state_generated.h"
 #include "frc971/control_loops/control_loops_generated.h"
 #include "frc971/control_loops/drivetrain/drivetrain_goal_generated.h"
@@ -17,11 +18,24 @@
 
 class AutonomousSplines {
  public:
+  AutonomousSplines()
+      : test_spline_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/test_spline.json")) {}
+
   static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
       aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
       aos::Alliance alliance);
   static flatbuffers::Offset<frc971::MultiSpline> StraightLine(
       aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder);
+
+  flatbuffers::Offset<frc971::MultiSpline> TestSpline(
+      aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
+    return aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_,
+                                                    builder->fbb());
+  }
+
+ private:
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
 };
 
 }  // namespace actors
diff --git a/y2020/actors/autonomous_actor.cc b/y2020/actors/autonomous_actor.cc
index fdf7ada..752ba95 100644
--- a/y2020/actors/autonomous_actor.cc
+++ b/y2020/actors/autonomous_actor.cc
@@ -8,8 +8,8 @@
 #include "aos/logging/logging.h"
 #include "aos/util/math.h"
 #include "frc971/control_loops/drivetrain/localizer_generated.h"
-#include "y2020/control_loops/drivetrain/drivetrain_base.h"
 #include "y2020/actors/auto_splines.h"
+#include "y2020/control_loops/drivetrain/drivetrain_base.h"
 
 DEFINE_bool(spline_auto, true, "If true, define a spline autonomous mode");
 
@@ -24,11 +24,13 @@
 AutonomousActor::AutonomousActor(::aos::EventLoop *event_loop)
     : frc971::autonomous::BaseAutonomousActor(
           event_loop, control_loops::drivetrain::GetDrivetrainConfig()),
-      localizer_control_sender_(event_loop->MakeSender<
-          ::frc971::control_loops::drivetrain::LocalizerControl>(
-          "/drivetrain")),
+      localizer_control_sender_(
+          event_loop->MakeSender<
+              ::frc971::control_loops::drivetrain::LocalizerControl>(
+              "/drivetrain")),
       joystick_state_fetcher_(
-          event_loop->MakeFetcher<aos::JoystickState>("/aos")) {
+          event_loop->MakeFetcher<aos::JoystickState>("/aos")),
+      auto_splines_() {
   set_max_drivetrain_voltage(2.0);
 }
 
@@ -84,9 +86,10 @@
 }
 
 void AutonomousActor::SplineAuto() {
-  SplineHandle spline1 = PlanSpline(std::bind(AutonomousSplines::BasicSSpline,
-                                              std::placeholders::_1, alliance_),
-                                    SplineDirection::kForward);
+  SplineHandle spline1 = PlanSpline(
+      [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
+                 *builder) { return auto_splines_.TestSpline(builder); },
+      SplineDirection::kForward);
 
   if (!spline1.WaitForPlan()) return;
   spline1.Start();
diff --git a/y2020/actors/autonomous_actor.h b/y2020/actors/autonomous_actor.h
index 4ad04d2..a58e3f9 100644
--- a/y2020/actors/autonomous_actor.h
+++ b/y2020/actors/autonomous_actor.h
@@ -7,6 +7,7 @@
 #include "frc971/control_loops/control_loops_generated.h"
 #include "frc971/control_loops/drivetrain/drivetrain_config.h"
 #include "frc971/control_loops/drivetrain/localizer_generated.h"
+#include "y2020/actors/auto_splines.h"
 
 namespace y2020 {
 namespace actors {
@@ -27,6 +28,7 @@
       localizer_control_sender_;
   aos::Fetcher<aos::JoystickState> joystick_state_fetcher_;
   aos::Alliance alliance_ = aos::Alliance::kInvalid;
+  AutonomousSplines auto_splines_;
 };
 
 }  // namespace actors
diff --git a/y2020/actors/splines/left_curve.json b/y2020/actors/splines/left_curve.json
new file mode 100644
index 0000000..1b54455
--- /dev/null
+++ b/y2020/actors/splines/left_curve.json
@@ -0,0 +1 @@
+{"spline_count": 1, "spline_x": [-5.265658676891484, -4.506548152324582, -3.9768989099928174, -3.455392453356026, -2.7826532359982323, -2.197294440050362], "spline_y": [-0.18454159151187616, -0.14940533686866445, -0.23880801776223934, -0.23880801776223934, 0.055956793313775184, 0.5131957091906839], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2}, {"constraint_type": "VOLTAGE", "value": 10}]}
\ No newline at end of file
diff --git a/y2020/actors/splines/test_spline.json b/y2020/actors/splines/test_spline.json
new file mode 100644
index 0000000..733d516
--- /dev/null
+++ b/y2020/actors/splines/test_spline.json
@@ -0,0 +1 @@
+{"spline_count": 1, "spline_x": [0, 0.4, 0.4, 0.6, 0.6, 1.0], "spline_y": [0, 0, 0.05, 0.1, 0.15, 0.15], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 1}, {"constraint_type": "LATERAL_ACCELERATION", "value": 1}, {"constraint_type": "VOLTAGE", "value": 2}]}
