diff --git a/launch/demo.launch b/launch/demo.launch
index 60711d53224ea1a1b42680d332a897122523aef8..48b1480b6900d707fc468d050df5da670b6bed9f 100755
--- a/launch/demo.launch
+++ b/launch/demo.launch
@@ -2,67 +2,27 @@
 
   <arg name="ticks_per_meter" value="10000" />
   <arg name="wheel_separation" value="0.2" />
+  <arg name="wheel_separation_length" value="0.3" />
 
-  <arg name="urdf_file" default="$(find diff_drive)/urdf/diff_drive_description.xacro" />
-  <param name="robot_description" command="$(find xacro)/xacro --inorder $(arg urdf_file)" />
-
-  <!-- Publish the robot state -->
-  <node name="robot_state_publisher" pkg="robot_state_publisher"
-        type="robot_state_publisher">
-    <param name="publish_frequency" value="10.0"/>
-  </node>
-
-  <!-- Provide simulated control of the robot joint angles -->
-  <node name="joint_state_publisher" pkg="joint_state_publisher"
-        type="joint_state_publisher">
-    <param name="use_gui" value="False" />
-    <param name="rate" value="10.0"/>
-  </node>
-
-  <node name="controller" pkg="diff_drive" type="diff_drive_controller"
+  <node name="controller" pkg="mecanum_drive" type="mecanum_drive_controller"
         output="screen">
     <rosparam subst_value="true">
       ticks_per_meter: $(arg ticks_per_meter)
       wheel_separation: $(arg wheel_separation)
+      wheel_separation_length: $(arg wheel_separation_length)
       max_motor_speed: 3000
       timeout: 1.0
     </rosparam>
     <remap from="cmd_vel" to="/robot/cmd_vel" />
   </node>
   
-  <node name="odom_publisher" pkg="diff_drive" type="diff_drive_odometry"
+  <node name="odom_publisher" pkg="mecanum_drive" type="mecanum_drive_odometry"
         output="screen">
     <rosparam subst_value="true">
       ticks_per_meter: $(arg ticks_per_meter)
       wheel_separation: $(arg wheel_separation)
+      wheel_separation_length: $(arg wheel_separation_length)
     </rosparam>
   </node>
 
-  <node name="robot" pkg="diff_drive" type="diff_drive_mock_robot"
-        output="screen">
-    <remap from="~lwheel_desired_rate" to="lwheel_desired_rate" />
-    <remap from="~rwheel_desired_rate" to="rwheel_desired_rate" />
-    <remap from="~lwheel_ticks" to="lwheel_ticks" />
-    <remap from="~rwheel_ticks" to="rwheel_ticks" />
-  </node>
-
-  <node name="diff_drive_go_to_goal" pkg="diff_drive"
-        type="diff_drive_go_to_goal" output="screen">
-    <param name="~rate" value="20" />
-    <param name="~kP" value="0.5" />
-    <param name="~kA" value="1.0" />
-    <param name="~kB" value="-0.8" />
-    <param name="~max_linear_speed" value="0.2" />
-    <param name="~min_linear_speed" value="0.05" />
-    <param name="~max_angular_speed" value="0.7" />
-    <param name="~min_angular_speed" value="0.1" />
-    <param name="~linear_tolerance" value="0.01" />
-    <param name="~angular_tolerance" value="0.04" />
-    <param name="~forwardMovementOnly" value="false" />
-    <remap from="cmd_vel" to="/robot/cmd_vel" />
-  </node>
-
-  <node name="rviz" pkg="rviz" type="rviz"
-        args="-d $(find diff_drive)/config/view.rviz" />
-
 </launch>
diff --git a/launch/revvy-config.launch b/launch/revvy-config.launch
deleted file mode 100755
index 39ab4befdad8ccfdd5b6228b3817567be368e9eb..0000000000000000000000000000000000000000
--- a/launch/revvy-config.launch
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<launch>
-
-  <arg name="ticks_per_meter" value="1800" />
-  <arg name="wheel_separation" value="0.1" />
-
-  <arg name="urdf_file" default="$(find diff_drive)/urdf/diff_drive_description.xacro" />
-  <param name="robot_description" command="$(find xacro)/xacro --inorder $(arg urdf_file)" />
-
-  <!-- Publish the robot state -->
-  <node name="robot_state_publisher" pkg="robot_state_publisher"
-        type="robot_state_publisher">
-    <param name="publish_frequency" value="10.0"/>
-  </node>
-
-  <!-- Provide simulated control of the robot joint angles -->
-  <node name="joint_state_publisher" pkg="joint_state_publisher"
-        type="joint_state_publisher">
-    <param name="use_gui" value="False" />
-    <param name="rate" value="10.0"/>
-  </node>
-
-  <node name="controller" pkg="diff_drive" type="diff_drive_controller"
-        output="screen">
-    <rosparam subst_value="true">
-      ticks_per_meter: $(arg ticks_per_meter)
-      wheel_separation: $(arg wheel_separation)
-      max_motor_speed: 3000
-      timeout: 1.0
-    </rosparam>
-  </node>
-  
-  <node name="odom_publisher" pkg="diff_drive" type="diff_drive_odometry"
-        output="screen">
-    <rosparam subst_value="true">
-      ticks_per_meter: $(arg ticks_per_meter)
-      wheel_separation: $(arg wheel_separation)
-    </rosparam>
-  </node>
-
-
-</launch>
diff --git a/nodes/mecanum_drive_controller b/nodes/mecanum_drive_controller
index d788a3a99bbab788a3072276e58201e9822ee826..f6be0a78e765fef099ae7a81f6e0acbd48379d1f 100755
--- a/nodes/mecanum_drive_controller
+++ b/nodes/mecanum_drive_controller
@@ -28,11 +28,13 @@ class ControllerNode:
 
         self.ticksPerMeter = float(rospy.get_param('~ticks_per_meter'))
         self.wheelSeparation = float(rospy.get_param('~wheel_separation'))
+        self.wheelSeparationLength = float(rospy.get_param('~wheel_separation_length'))
         self.maxMotorSpeed = int(rospy.get_param('~max_motor_speed'))
         self.rate = float(rospy.get_param('~rate', 10.0))
         self.timeout = float(rospy.get_param('~timeout', 0.2))
 
         self.controller.setWheelSeparation(self.wheelSeparation)
+        self.controller.setWheelSeparationLength(self.wheelSeparationLength)
         self.controller.setTicksPerMeter(self.ticksPerMeter)
         self.controller.setMaxMotorSpeed(self.maxMotorSpeed)
 
diff --git a/nodes/mecanum_drive_odometry b/nodes/mecanum_drive_odometry
index 74c05acdf94e21a525144426e5daf03c296ab5b0..a7546bff3ad6a0c36901263ffb9640580be93ecc 100755
--- a/nodes/mecanum_drive_odometry
+++ b/nodes/mecanum_drive_odometry
@@ -47,6 +47,7 @@ class OdometryNode:
 
         self.ticksPerMeter = int(rospy.get_param('~ticks_per_meter'))
         self.wheelSeparation = float(rospy.get_param('~wheel_separation'))
+        self.wheelSeparationLength = float(rospy.get_param('~wheel_separation_length'))
         self.rate = float(rospy.get_param('~rate', 20.0))
         self.baseFrameID = rospy.get_param('~base_frame_id', 'base_link')
         self.odomFrameID = rospy.get_param('~odom_frame_id', 'odom')
@@ -54,6 +55,7 @@ class OdometryNode:
         self.encoderMax = int(rospy.get_param('~encoder_max', 32767))
 
         self.odometry.setWheelSeparation(self.wheelSeparation)
+        self.odometry.setWheelSeparationLength(self.wheelSeparationLength)
         self.odometry.setTicksPerMeter(self.ticksPerMeter)
         self.odometry.setEncoderRange(self.encoderMin, self.encoderMax)
         self.odometry.setTime(rospy.get_time())
diff --git a/src/mecanum_drive/controller.py b/src/mecanum_drive/controller.py
index c7f8be49b3d6b5a9a468b679e6373aee1fa8ef46..28b290dab02591843455345187dba81c8c447723 100755
--- a/src/mecanum_drive/controller.py
+++ b/src/mecanum_drive/controller.py
@@ -25,8 +25,8 @@ class Controller:
     
         # print(linearXSpeed,linearYSpeed,angularSpeed)
     
-        WHEEL_SEPARATION_WIDTH = 0.1
-        WHEEL_SEPARATION_LENGTH = 0.13
+        WHEEL_SEPARATION_WIDTH = self.wheelSeparation
+        WHEEL_SEPARATION_LENGTH = self.wheelSeparationLength
         
         speeds = MotorCommand()
         
@@ -53,7 +53,10 @@ class Controller:
         return speeds
 
     def setWheelSeparation(self, separation):
-        self.wheelSeparation = separation
+        self.wheelSeparation = separation 
+        
+    def setWheelSeparationLength(self, separation):
+        self.wheelSeparationLength = separation
 
     def setMaxMotorSpeed(self, limit):
         self.maxMotorSpeed = limit
diff --git a/src/mecanum_drive/odometry.py b/src/mecanum_drive/odometry.py
index 5e36026423cfc54d2e014924fb066392098b218b..bfb621d90cb6d17816ebac43a8054d6b58b14ac8 100755
--- a/src/mecanum_drive/odometry.py
+++ b/src/mecanum_drive/odometry.py
@@ -17,6 +17,9 @@ class Odometry:
     def setWheelSeparation(self, separation):
         self.wheelSeparation = separation
 
+    def setWheelSeparationLength(self, separation):
+        self.wheelSeparationLength = separation
+
     def setTicksPerMeter(self, ticks):
         self.ticksPerMeter = ticks