+#include "arm_solutions/JohannKosselSolution.h"
+#include "arm_solutions/HBotSolution.h"
+
+#define default_seek_rate_checksum CHECKSUM("default_seek_rate")
+#define default_feed_rate_checksum CHECKSUM("default_feed_rate")
+#define mm_per_line_segment_checksum CHECKSUM("mm_per_line_segment")
+#define delta_segments_per_second_checksum CHECKSUM("delta_segments_per_second")
+#define mm_per_arc_segment_checksum CHECKSUM("mm_per_arc_segment")
+#define arc_correction_checksum CHECKSUM("arc_correction")
+#define x_axis_max_speed_checksum CHECKSUM("x_axis_max_speed")
+#define y_axis_max_speed_checksum CHECKSUM("y_axis_max_speed")
+#define z_axis_max_speed_checksum CHECKSUM("z_axis_max_speed")
+
+// arm solutions
+#define arm_solution_checksum CHECKSUM("arm_solution")
+#define cartesian_checksum CHECKSUM("cartesian")
+#define rotatable_cartesian_checksum CHECKSUM("rotatable_cartesian")
+#define rostock_checksum CHECKSUM("rostock")
+#define delta_checksum CHECKSUM("delta")
+#define hbot_checksum CHECKSUM("hbot")
+#define corexy_checksum CHECKSUM("corexy")
+#define kossel_checksum CHECKSUM("kossel")
+
+// stepper motor stuff
+#define alpha_step_pin_checksum CHECKSUM("alpha_step_pin")
+#define beta_step_pin_checksum CHECKSUM("beta_step_pin")
+#define gamma_step_pin_checksum CHECKSUM("gamma_step_pin")
+#define alpha_dir_pin_checksum CHECKSUM("alpha_dir_pin")
+#define beta_dir_pin_checksum CHECKSUM("beta_dir_pin")
+#define gamma_dir_pin_checksum CHECKSUM("gamma_dir_pin")
+#define alpha_en_pin_checksum CHECKSUM("alpha_en_pin")
+#define beta_en_pin_checksum CHECKSUM("beta_en_pin")
+#define gamma_en_pin_checksum CHECKSUM("gamma_en_pin")
+
+#define alpha_steps_per_mm_checksum CHECKSUM("alpha_steps_per_mm")
+#define beta_steps_per_mm_checksum CHECKSUM("beta_steps_per_mm")
+#define gamma_steps_per_mm_checksum CHECKSUM("gamma_steps_per_mm")
+
+#define alpha_max_rate_checksum CHECKSUM("alpha_max_rate")
+#define beta_max_rate_checksum CHECKSUM("beta_max_rate")
+#define gamma_max_rate_checksum CHECKSUM("gamma_max_rate")
+
+
+// new-style actuator stuff
+#define actuator_checksum CHEKCSUM("actuator")
+
+#define step_pin_checksum CHECKSUM("step_pin")
+#define dir_pin_checksum CHEKCSUM("dir_pin")
+#define en_pin_checksum CHECKSUM("en_pin")
+
+#define steps_per_mm_checksum CHECKSUM("steps_per_mm")
+#define max_rate_checksum CHECKSUM("max_rate")
+
+#define alpha_checksum CHECKSUM("alpha")
+#define beta_checksum CHECKSUM("beta")
+#define gamma_checksum CHECKSUM("gamma")
+
+
+// The Robot converts GCodes into actual movements, and then adds them to the Planner, which passes them to the Conveyor so they can be added to the queue
+// It takes care of cutting arcs into segments, same thing for line that are too long
+#define max(a,b) (((a) > (b)) ? (a) : (b))