diff --git a/SubESP32StackBuilder.py b/SubESP32StackBuilder.py
new file mode 100644
index 0000000000000000000000000000000000000000..c8a58e4be69843f338b4a9980b8d2154fd0285d8
--- /dev/null
+++ b/SubESP32StackBuilder.py
@@ -0,0 +1,62 @@
+from rocolib.api.components.Component import Component
+from rocolib.api.Function import Function
+
+# ESP3 STACK WITH PWM SERVO FEATHERWING
+c = Component()
+
+c.addSubcomponent("holder", "SimpleRectBeam")
+
+# Dimensions of the ESP32 Stack
+c.addParameter("length", 60, paramType="length")
+
+c.addParameter("brains", "esp32stack", paramType="dimension")
+c.addConstraint(("holder", "length"), "length")
+c.addConstraint(("holder", "depth"), "brains", "getDim(x, 'height')")
+c.addConstraint(("holder", "width"), "brains", "getDim(x, 'width')")
+
+# This parameter will change when the dimensions of the car or vehicle is changed
+# so that it would not affect the ESP32 stack holder
+c.addSubcomponent("header", "Header")
+
+
+def getBrainParameter(p):
+    return "brains", "getDim(x, '%s')" % p
+
+
+# OLED at the top
+c.addConstraint(("header", "nrows"), "brains", "getDim(x, 'nrows')")
+c.addConstraint(("header", "ncols"), "brains", "getDim(x, 'ncols')")
+c.addConstraint(("header", "rowsep"), "brains", "getDim(x, 'rowsep')")
+c.addConstraint(("header", "colsep"), "brains", "getDim(x, 'colsep')")
+
+# Holes for servo and power supply
+c.addParameter("dy1", 18, parameterType="length")
+c.addSubcomponent("servohole0", "Cutout")
+c.addConstraint(("servohole0", "dy"), "brains", "getDim(x, 'height')/1.75")
+c.addConstraint(("servohole0", "dx"), "dy1", "x-5")
+
+c.addConnection(("holder", "face0"),
+                ("header", "decoration"),
+                mode="hole", offset=Function(params=("length", "brains"), fnstring="(0, 0)"))
+
+c.addConnection(("holder", "face2"),
+                ("header", "decoration"),
+                mode="hole", offset=Function(params=("length", "brains"), fnstring="(0, 0)"))
+
+c.addConnection(("holder", "face3"),
+                ("servohole0", "decoration"),
+                mode="hole", rotate=True,
+                offset=Function(params=("brains", "length"), fnstring="(getDim(x[0], 'height') * -0.06, x[1] * 0.32)"))
+
+c.addSubcomponent("powerhole", "Cutout")
+c.addConstraint(("powerhole", "dy"), "brains", "getDim(x, 'height')/1.75")
+c.addConstraint(("powerhole", "dx"), "dy1")
+
+c.addConnection(("holder", "face1"),
+                ("powerhole", "decoration"),
+                mode="hole", rotate=True,
+                offset=Function(params=("brains", "length"), fnstring="(getDim(x[0], 'height') * 0.15, x[1] * 0.25)"))
+
+c.inheritAllInterfaces("holder", prefix=None)
+
+c.toLibrary("SubESP32Stack")
diff --git a/rocolib/builders/BrainsTwoWheelsBuilder.py b/rocolib/builders/BrainsTwoWheelsBuilder.py
index 8b7ddc71add9cd423294b87fff0597919d586b8c..6d3c1a0bc5680736c20342b8f418ff2e662043e5 100644
--- a/rocolib/builders/BrainsTwoWheelsBuilder.py
+++ b/rocolib/builders/BrainsTwoWheelsBuilder.py
@@ -5,9 +5,9 @@ c = Component()
 
 #Parameters for the sheath that would cover the wheels and the ESP32 Stack
 #Parameters that will change the dimension of the car
-c.addParameter("length", 65, paramType="length", minValue=60) #tested minValue
-c.addParameter("height", 48, paramType="length", minValue=36) #tested minValue
-c.addParameter("width", 60, paramType="length", minValue=51) #tested minValue
+c.addParameter("length", 65, paramType="length", minValue=65) #tested minValue
+c.addParameter("height", 36, paramType="length", minValue=36) #tested minValue
+c.addParameter("width", 60, paramType="length", minValue=60) #tested minValue
 
 #Holder for the ESP32 FeatherBoard and its Featherwings
 #If you have another "brain" or microcontroller or board change it here and adjust the parameters above to fit that "brain"
@@ -46,9 +46,6 @@ c.addConstraint(("between0", "width"), "driveservo", "getDim(x, 'motorwidth')")
 c.addConnection(("fright", "topedge2"), ("between0", "topedge1"), angle=90)
 c.addConnection(("between0", "botedge1"), ("bleft", "botedge2"), angle=90, tabWidth=10)
 
-#The side of the holder will adjust when the width of the car gets bigger
-#so that the size of the holder for the ESP32 stack woul not change
-
 #Flipping he front right wheels to match the orientation of the
 #bottom left
 c.addConstConstraint(("fright", "flip"), True)
@@ -78,21 +75,39 @@ c.addConstraint(("sheathsplit0", "botlength"), ("driveservo", "width"), "(x[1] -
 c.addConnection(("bleft", "botedge1"), ("sheathsplit0", "botedge1"),angle=180)
 c.addConnection(("sheathsplit0", "topedge0"), ("sheath0", "topedge2"))
 
-#Creating the holes for the servo
+#Creating the holes for the servo wires
 for i in range(2):
     c.addSubcomponent("sidehole%d" %i, "Cutout")
-    c.addConstraint(("sidehole%d" %i, "dx"), "height", "14")
+    c.addConstraint(("sidehole%d" %i, "dx"), "height", "x * 0.39")
 
-c.addConstraint(("sidehole0", "dy"), "height", "30")
-c.addConstraint(("sidehole1", "dy"), "height", "23")
+c.addConstraint(("sidehole0", "dy"), "height", "x * 0.7")
+c.addConstraint(("sidehole1", "dy"), "height", "x * 0.5")
 
 c.addConnection(("sheath0", "face1"),
                    ("sidehole0", "decoration"),
-                   mode="hole", rotate=True, offset=Function(params=("length"), fnstring="(7, 21)"))
+                   mode="hole", rotate=True, offset=Function(params=("height", "brains"), fnstring="(x[0] * -0.10, getDim(x[1], 'width') - 3)"))
 c.addConnection(("sheath0", "face3"),
                    ("sidehole1", "decoration"),
-                   mode="hole", rotate=True, offset=Function(params=("length"), fnstring="(-10, 21)"))
+                   mode="hole", rotate=True, offset=Function(params=("height", "brains"), fnstring="(x[0] * -0.04, getDim(x[1], 'width') - 3)"))
+
+for i in range(4):
+    c.addSubcomponent("accessoryHole%d" % i, "Cutout")
+    c.addConstraint(("accessoryHole%d" % i, "dx"), "height", "x * 0.03")
+    c.addConstraint(("accessoryHole%d" % i, "dy"), "height", "x * 0.5")
 
+c.addConnection(("sheath0", "face1"),
+                   ("accessoryHole0", "decoration"),
+                   mode="hole", rotate=True, offset=Function(params=("height", "length"), fnstring="(x[0] * -0.10, -x[1] * 0.45)"))
+c.addConnection(("sheath0", "face3"),
+                   ("accessoryHole1", "decoration"),
+                   mode="hole", rotate=True, offset=Function(params=("height", "length"), fnstring="(x[0] * -0.04, -x[1] * 0.45)"))
+
+c.addConnection(("sheath0", "face1"),
+                   ("accessoryHole2", "decoration"),
+                   mode="hole", rotate=True, offset=Function(params=("height", "length"), fnstring="(x[0] * -0.10, x[1] * 0.05)"))
+c.addConnection(("sheath0", "face3"),
+                   ("accessoryHole3", "decoration"),
+                   mode="hole", rotate=True, offset=Function(params=("height", "length"), fnstring="(x[0] * -0.04, x[1] * 0.05)"))
 
 c.inheritAllInterfaces("sheathsplit0")
 c.inheritAllInterfaces("sheath0")
diff --git a/rocolib/builders/CarForSteeringBuilder.py b/rocolib/builders/CarForSteeringBuilder.py
index 08260016fa574394200de74c727861d26413444b..f01e3ff70ad072cbeafb28e9f00cc115c1238814 100644
--- a/rocolib/builders/CarForSteeringBuilder.py
+++ b/rocolib/builders/CarForSteeringBuilder.py
@@ -3,7 +3,19 @@ from rocolib.api.components.Component import Component
 c = Component()
 
 c.addSubcomponent("front", "NewBrainsTwoWheels")
-c.addSubcomponent("back", "TwoWheels", inherit=True, prefix=None)
+c.addSubcomponent("back", "TwoWheels")
+
+c.addParameter("length", 65, paramType="length", minValue=65) #tested minValue
+c.addParameter("height", 36, paramType="length", minValue=36) #tested minValue
+c.addParameter("width", 60, paramType="length", minValue=60) #tested minValue
+
+c.addConstraint(("front", "length"), "length")
+c.addConstraint(("front", "height"), "height")
+c.addConstraint(("front", "width"), "width")
+
+c.addConstraint(("back", "length"), "length")
+c.addConstraint(("back", "height"), "height")
+c.addConstraint(("back", "width"), "width")
 
 #Main component of steering wheel car which makes them moveable: trapezoid that connects the two half of the car
 for i in range(4):
diff --git a/rocolib/builders/FourWheelCarBuilder.py b/rocolib/builders/FourWheelCarBuilder.py
index 3d00515b5f0605d42b335b4fefc65bf4e1198279..9da73b6e0bbf37fb33272320ce293ca5cca1589e 100644
--- a/rocolib/builders/FourWheelCarBuilder.py
+++ b/rocolib/builders/FourWheelCarBuilder.py
@@ -3,22 +3,25 @@ from rocolib.api.components.Component import Component
 c = Component()
 
 c.addSubcomponent("front", "NewBrainsTwoWheels")
-c.addSubcomponent("middle", "TwoWheels")
-c.addSubcomponent("back", "TwoWheels", inherit=True, prefix=None)
+c.addSubcomponent("back", "TwoWheels")
 
-# c.addConnection(("front", "sheath0.botedge2"), ("back", "sheath1.botedge2"))
-# c.addConnection(("front", "sheath0.botedge0"), ("back", "sheath1.botedge0"), tabWidth=10)
+c.addParameter("length", 65, paramType="length", minValue=65) #tested minValue
+c.addParameter("height", 36, paramType="length", minValue=36) #tested minValue
+c.addParameter("width", 60, paramType="length", minValue=60) #tested minValue
 
-c.addConstraint(("back", "length"), "length", "x+15")
+c.addConstraint(("front", "length"), "length")
+c.addConstraint(("front", "height"), "height")
+c.addConstraint(("front", "width"), "width")
 
-#I'm trying to create a car with 6 wheels with the code below, but when I just use tabWidth. It wouldn't connect it in the 3D file
-c.addConnection(("front", "sheath0.botedge2"), ("middle", "sheath1.botedge2"))
-c.addConnection(("back", "sheath1.botedge2"), ("middle", "sheath1.topedge2"), tabWidth=20)
-c.addConnection(("front", "sheath0.botedge0"), ("middle", "sheath1.botedge0"), tabWidth=20)
-c.addConnection(("back", "sheath1.botedge0"), ("middle", "sheath1.topedge0"), tabWidth=20)
+c.addConstraint(("back", "length"), "length")
+c.addConstraint(("back", "height"), "height")
+c.addConstraint(("back", "width"), "width")
+
+c.addConnection(("front", "sheath0.botedge2"), ("back", "sheath1.botedge2"))
+c.addConnection(("front", "sheath0.botedge0"), ("back", "sheath1.botedge0"), tabWidth=13)
 
 c.addSubcomponent("shield", "Rectangle")
-c.addConstraint(("shield", "l"), ("driveservo", "height"), "x[1] - getDim(x[0],'motorwidth')")
+c.addConstraint(("shield", "l"), "height", "x - 13")
 c.addConstraint(("shield", "w"), "width")
 
 c.addConnection(("shield", "b"), ("back", "splitedge0"), angle=90, tabWidth=10)
diff --git a/rocolib/builders/TwoWheelsBuilder.py b/rocolib/builders/TwoWheelsBuilder.py
index 8ebc0bb43b8a0dd878ed22a69ad0b0528b699b4b..dc1089d2529cd5e23e6b190a438c4909c0b00979 100644
--- a/rocolib/builders/TwoWheelsBuilder.py
+++ b/rocolib/builders/TwoWheelsBuilder.py
@@ -1,12 +1,13 @@
 from rocolib.api.components.Component import Component
+from rocolib.api.Function import Function
 
 c = Component()
 
 #Parameters for the sheath that would cover the wheels and the ESP32 Stack
 #Parameters that will change the dimension of the car
-c.addParameter("length", 65, paramType="length", minValue=60) #tested minValue
-c.addParameter("height", 48, paramType="length", minValue=36) #tested minValue
-c.addParameter("width", 60, paramType="length", minValue=51) #tested minValue
+c.addParameter("length", 65, paramType="length", minValue=65) #tested minValue
+c.addParameter("height", 36, paramType="length", minValue=36) #tested minValue
+c.addParameter("width", 60, paramType="length", minValue=60) #tested minValue
 
 #This car will use the customized ESP32 stack in dimensions.py and the FS90R servo
 #Change here if you have another board
@@ -66,4 +67,4 @@ c.inheritAllInterfaces("sheath1")
 c.inheritInterface("splitedge0", ("sheathsplit0", "botedge1"))
 c.inheritInterface("splitedge1", ("sheathsplit1", "botedge0"))
 
-c.toLibrary("TwoWheels")
+c.toLibrary("TwoWheels")
\ No newline at end of file
diff --git a/rocolib/library/CarForSteering.yaml b/rocolib/library/CarForSteering.yaml
index 23ee3c45078ae12baa585890e073c51b3e201671..62561230c25a2cdc3990d3de4dab44d6d1e4cb90 100644
--- a/rocolib/library/CarForSteering.yaml
+++ b/rocolib/library/CarForSteering.yaml
@@ -31,30 +31,8 @@ connections:
   - {}
 interfaces: {}
 parameters:
-  brains:
-    defaultValue: esp32stack
-    spec:
-      valueType: str
-  bright.angle:
-    defaultValue: 0
-    spec:
-      maxValue: null
-      minValue: null
-      units: degrees
-      valueType: (float, int)
-  driveservo:
-    defaultValue: fs90r
-    spec:
-      valueType: str
-  fleft.angle:
-    defaultValue: 0
-    spec:
-      maxValue: null
-      minValue: null
-      units: degrees
-      valueType: (float, int)
   height:
-    defaultValue: 48
+    defaultValue: 36
     spec:
       minValue: 36
       units: mm
@@ -62,13 +40,13 @@ parameters:
   length:
     defaultValue: 65
     spec:
-      minValue: 60
+      minValue: 65
       units: mm
       valueType: (float, int)
   width:
     defaultValue: 60
     spec:
-      minValue: 51
+      minValue: 60
       units: mm
       valueType: (float, int)
 source: ..\builders\CarForSteeringBuilder.py
@@ -77,14 +55,6 @@ subcomponents:
     classname: TwoWheels
     kwargs: {}
     parameters:
-      brains:
-        parameter: brains
-      bright.angle:
-        parameter: bright.angle
-      driveservo:
-        parameter: driveservo
-      fleft.angle:
-        parameter: fleft.angle
       height:
         parameter: height
       length:
@@ -94,7 +64,13 @@ subcomponents:
   front:
     classname: NewBrainsTwoWheels
     kwargs: {}
-    parameters: {}
+    parameters:
+      height:
+        parameter: height
+      length:
+        parameter: length
+      width:
+        parameter: width
   midsupport0:
     classname: Trapezoid
     kwargs: {}
diff --git a/rocolib/library/FourWheelCar.yaml b/rocolib/library/FourWheelCar.yaml
index a05f295ff023bec0b17bb0a1ea5d4a7707dfe77c..dd0feb20ddcfc5a383cd034664a278927e0f7f6b 100644
--- a/rocolib/library/FourWheelCar.yaml
+++ b/rocolib/library/FourWheelCar.yaml
@@ -2,35 +2,23 @@ connections:
   connection0:
   - - front
     - sheath0.botedge2
-  - - middle
+  - - back
     - sheath1.botedge2
   - {}
   connection1:
-  - - back
-    - sheath1.botedge2
-  - - middle
-    - sheath1.topedge2
-  - tabWidth: 20
-  connection2:
   - - front
     - sheath0.botedge0
-  - - middle
-    - sheath1.botedge0
-  - tabWidth: 20
-  connection3:
   - - back
     - sheath1.botedge0
-  - - middle
-    - sheath1.topedge0
-  - tabWidth: 20
-  connection4:
+  - tabWidth: 13
+  connection2:
   - - shield
     - b
   - - back
     - splitedge0
   - angle: 90
     tabWidth: 10
-  connection5:
+  connection3:
   - - shield
     - t
   - - back
@@ -38,30 +26,8 @@ connections:
   - angle: 90
 interfaces: {}
 parameters:
-  brains:
-    defaultValue: esp32stack
-    spec:
-      valueType: str
-  bright.angle:
-    defaultValue: 0
-    spec:
-      maxValue: null
-      minValue: null
-      units: degrees
-      valueType: (float, int)
-  driveservo:
-    defaultValue: fs90r
-    spec:
-      valueType: str
-  fleft.angle:
-    defaultValue: 0
-    spec:
-      maxValue: null
-      minValue: null
-      units: degrees
-      valueType: (float, int)
   height:
-    defaultValue: 48
+    defaultValue: 36
     spec:
       minValue: 36
       units: mm
@@ -69,13 +35,13 @@ parameters:
   length:
     defaultValue: 65
     spec:
-      minValue: 60
+      minValue: 65
       units: mm
       valueType: (float, int)
   width:
     defaultValue: 60
     spec:
-      minValue: 51
+      minValue: 60
       units: mm
       valueType: (float, int)
 source: ..\builders\FourWheelCarBuilder.py
@@ -84,37 +50,28 @@ subcomponents:
     classname: TwoWheels
     kwargs: {}
     parameters:
-      brains:
-        parameter: brains
-      bright.angle:
-        parameter: bright.angle
-      driveservo:
-        parameter: driveservo
-      fleft.angle:
-        parameter: fleft.angle
       height:
         parameter: height
       length:
-        function: x+15
         parameter: length
       width:
         parameter: width
   front:
     classname: NewBrainsTwoWheels
     kwargs: {}
-    parameters: {}
-  middle:
-    classname: TwoWheels
-    kwargs: {}
-    parameters: {}
+    parameters:
+      height:
+        parameter: height
+      length:
+        parameter: length
+      width:
+        parameter: width
   shield:
     classname: Rectangle
     kwargs: {}
     parameters:
       l:
-        function: x[1] - getDim(x[0],'motorwidth')
-        parameter:
-        - driveservo
-        - height
+        function: x - 13
+        parameter: height
       w:
         parameter: width
diff --git a/rocolib/library/MountedServo.yaml b/rocolib/library/MountedServo.yaml
index aa1b7c9b6564656bc38e914721f81d6c16d090a0..26efb16cbf4d42c456afd5f89320ec0d78231197 100644
--- a/rocolib/library/MountedServo.yaml
+++ b/rocolib/library/MountedServo.yaml
@@ -6,48 +6,6 @@ connections:
     - horn
   - {}
 interfaces:
-  beam.botedge0:
-    interface: beam.botedge0
-    subcomponent: mount
-  beam.botedge1:
-    interface: beam.botedge1
-    subcomponent: mount
-  beam.botedge2:
-    interface: beam.botedge2
-    subcomponent: mount
-  beam.botedge3:
-    interface: beam.botedge3
-    subcomponent: mount
-  beam.face0:
-    interface: beam.face0
-    subcomponent: mount
-  beam.face1:
-    interface: beam.face1
-    subcomponent: mount
-  beam.face2:
-    interface: beam.face2
-    subcomponent: mount
-  beam.face3:
-    interface: beam.face3
-    subcomponent: mount
-  beam.slotedge:
-    interface: beam.slotedge
-    subcomponent: mount
-  beam.tabedge:
-    interface: beam.tabedge
-    subcomponent: mount
-  beam.topedge0:
-    interface: beam.topedge0
-    subcomponent: mount
-  beam.topedge1:
-    interface: beam.topedge1
-    subcomponent: mount
-  beam.topedge2:
-    interface: beam.topedge2
-    subcomponent: mount
-  beam.topedge3:
-    interface: beam.topedge3
-    subcomponent: mount
   botedge0:
     interface: botedge0
     subcomponent: mount
@@ -161,6 +119,12 @@ parameters:
     defaultValue: false
     spec:
       valueType: bool
+  length:
+    defaultValue: 100
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
   offset:
     defaultValue: null
     spec:
@@ -179,13 +143,7 @@ parameters:
       minValue: 0
       units: mm
       valueType: (float, int)
-  width:
-    defaultValue: 20
-    spec:
-      minValue: 0
-      units: mm
-      valueType: (float, int)
-source: ../builders/MountedServoBuilder.py
+source: ..\builders\MountedServoBuilder.py
 subcomponents:
   mount:
     classname: ServoMount
@@ -197,14 +155,14 @@ subcomponents:
         parameter: center
       flip:
         parameter: flip
+      length:
+        parameter: length
       offset:
         parameter: offset
       servo:
         parameter: servo
       shift:
         parameter: shift
-      width:
-        parameter: width
   servo:
     classname: ServoMotor
     kwargs: {}
diff --git a/rocolib/library/NewBrainsTwoWheels.yaml b/rocolib/library/NewBrainsTwoWheels.yaml
index 97046cf6fdf2287008c792a57bae92385cb376a8..aafae1f7d91e2f094dffa4fe589ceb5a5bfea0c9 100644
--- a/rocolib/library/NewBrainsTwoWheels.yaml
+++ b/rocolib/library/NewBrainsTwoWheels.yaml
@@ -12,6 +12,48 @@ connections:
     - botedge2
   - angle: 90
     tabWidth: 10
+  connection10:
+  - &id002
+    - sheath0
+    - face1
+  - - accessoryHole0
+    - decoration
+  - mode: hole
+    offset:
+      function: (x[0] * -0.10, -x[1] * 0.45)
+      parameter: &id001
+      - height
+      - length
+    rotate: true
+  connection11:
+  - &id003
+    - sheath0
+    - face3
+  - - accessoryHole1
+    - decoration
+  - mode: hole
+    offset:
+      function: (x[0] * -0.04, -x[1] * 0.45)
+      parameter: *id001
+    rotate: true
+  connection12:
+  - *id002
+  - - accessoryHole2
+    - decoration
+  - mode: hole
+    offset:
+      function: (x[0] * -0.10, x[1] * 0.05)
+      parameter: *id001
+    rotate: true
+  connection13:
+  - *id003
+  - - accessoryHole3
+    - decoration
+  - mode: hole
+    offset:
+      function: (x[0] * -0.04, x[1] * 0.05)
+      parameter: *id001
+    rotate: true
   connection2:
   - - holder
     - botedge1
@@ -49,24 +91,24 @@ connections:
     - topedge2
   - {}
   connection8:
-  - - sheath0
-    - face1
+  - *id002
   - - sidehole0
     - decoration
   - mode: hole
     offset:
-      function: (7, 21)
-      parameter: length
+      function: (x[0] * -0.10, getDim(x[1], 'width') - 3)
+      parameter: &id004
+      - height
+      - brains
     rotate: true
   connection9:
-  - - sheath0
-    - face3
+  - *id003
   - - sidehole1
     - decoration
   - mode: hole
     offset:
-      function: (-10, 21)
-      parameter: length
+      function: (x[0] * -0.04, getDim(x[1], 'width') - 3)
+      parameter: *id004
     rotate: true
 interfaces:
   sheath0.botedge0:
@@ -735,7 +777,7 @@ parameters:
       units: degrees
       valueType: (float, int)
   height:
-    defaultValue: 48
+    defaultValue: 36
     spec:
       minValue: 36
       units: mm
@@ -743,17 +785,57 @@ parameters:
   length:
     defaultValue: 65
     spec:
-      minValue: 60
+      minValue: 65
       units: mm
       valueType: (float, int)
   width:
     defaultValue: 60
     spec:
-      minValue: 51
+      minValue: 60
       units: mm
       valueType: (float, int)
 source: ..\builders\BrainsTwoWheelsBuilder.py
 subcomponents:
+  accessoryHole0:
+    classname: Cutout
+    kwargs: {}
+    parameters:
+      dx:
+        function: x * 0.03
+        parameter: height
+      dy:
+        function: x * 0.5
+        parameter: height
+  accessoryHole1:
+    classname: Cutout
+    kwargs: {}
+    parameters:
+      dx:
+        function: x * 0.03
+        parameter: height
+      dy:
+        function: x * 0.5
+        parameter: height
+  accessoryHole2:
+    classname: Cutout
+    kwargs: {}
+    parameters:
+      dx:
+        function: x * 0.03
+        parameter: height
+      dy:
+        function: x * 0.5
+        parameter: height
+  accessoryHole3:
+    classname: Cutout
+    kwargs: {}
+    parameters:
+      dx:
+        function: x * 0.03
+        parameter: height
+      dy:
+        function: x * 0.5
+        parameter: height
   between0:
     classname: SimpleRectBeam
     kwargs: {}
@@ -779,7 +861,7 @@ subcomponents:
       center: false
       length:
         function: ((x[0] - getDim(x[1], "width")))
-        parameter: &id001
+        parameter: &id005
         - length
         - brains
       radius:
@@ -798,7 +880,7 @@ subcomponents:
       flip: true
       length:
         function: ((x[0] - getDim(x[1], "width")))
-        parameter: *id001
+        parameter: *id005
       radius:
         function: (getDim(x, "height") / 1.35)
         parameter: brains
@@ -837,20 +919,20 @@ subcomponents:
     kwargs: {}
     parameters:
       dx:
-        function: '14'
+        function: x * 0.39
         parameter: height
       dy:
-        function: '30'
+        function: x * 0.7
         parameter: height
   sidehole1:
     classname: Cutout
     kwargs: {}
     parameters:
       dx:
-        function: '14'
+        function: x * 0.39
         parameter: height
       dy:
-        function: '23'
+        function: x * 0.5
         parameter: height
   split0:
     classname: SplitEdge
@@ -859,7 +941,7 @@ subcomponents:
       botlength:
         function: (getDim(x[1], "motorwidth"), getDim(x[0], "height") - getDim(x[1],
           "motorwidth"))
-        parameter: &id002
+        parameter: &id006
         - brains
         - driveservo
       toplength:
@@ -872,7 +954,7 @@ subcomponents:
       botlength:
         function: (getDim(x[0], "height") - getDim(x[1], "motorwidth"), getDim(x[1],
           "motorwidth"))
-        parameter: *id002
+        parameter: *id006
       toplength:
         function: (getDim(x, "height"),)
         parameter: brains
diff --git a/rocolib/library/ServoMotor.py b/rocolib/library/ServoMotor.py
index 3f8c1e5e86962d133d3aa6ea35c7b4476615ad41..5881e47e4152317542664da196de296caf222703 100644
--- a/rocolib/library/ServoMotor.py
+++ b/rocolib/library/ServoMotor.py
@@ -3,6 +3,7 @@ from rocolib.api.composables.graph.Face import Rectangle as Shape
 from rocolib.api.ports import AnchorPort
 from rocolib.utils.dimensions import getDim
 from rocolib.utils.transforms import Translate, RotateZ
+from rocolib.utils.numsym import dot
 
 
 class ServoMotor(FoldedComponent):
@@ -18,7 +19,7 @@ class ServoMotor(FoldedComponent):
     dz = getDim(s, "hornheight")
 
     self.addFace(Shape("h", 0, 0))
-    self.setInterface("horn", AnchorPort(self, self.getGraph(), "h", RotateZ(a) * Translate([0,0,dz])))
+    self.setInterface("horn", AnchorPort(self, self.getGraph(), "h", dot(RotateZ(a), Translate([0,0,dz]))))
 
 if __name__ == "__main__":
     ServoMotor.test()
diff --git a/rocolib/library/SubESP32Stack.yaml b/rocolib/library/SubESP32Stack.yaml
index 660661ad1579872983f5fbab1422a121e067a322..2d2aa95732f7b36f70280f519482b183c1cebdd6 100644
--- a/rocolib/library/SubESP32Stack.yaml
+++ b/rocolib/library/SubESP32Stack.yaml
@@ -22,12 +22,14 @@ connections:
   connection2:
   - - holder
     - face3
-  - - servohole1
+  - - servohole0
     - decoration
   - mode: hole
     offset:
-      function: (0, 14)
-      parameter: length
+      function: (getDim(x[0], 'height') * -0.06, x[1] * 0.32)
+      parameter: &id003
+      - brains
+      - length
     rotate: true
   connection3:
   - - holder
@@ -36,8 +38,8 @@ connections:
     - decoration
   - mode: hole
     offset:
-      function: (-5, 12)
-      parameter: length
+      function: (getDim(x[0], 'height') * 0.15, x[1] * 0.25)
+      parameter: *id003
     rotate: true
 interfaces:
   botedge0:
@@ -92,12 +94,12 @@ parameters:
     spec:
       parameterType: length
   length:
-    defaultValue: 61
+    defaultValue: 60
     spec:
       minValue: 0
       units: mm
       valueType: (float, int)
-source: ../builders/SubESP32StackBuilder.py
+source: ..\..\SubESP32StackBuilder.py
 subcomponents:
   header:
     classname: Header
@@ -120,63 +122,22 @@ subcomponents:
     kwargs: {}
     parameters:
       depth:
-        function: '60'
+        function: getDim(x, 'height')
         parameter: brains
       length:
         parameter: length
       width:
         function: getDim(x, 'width')
         parameter: brains
-  pinhole0:
-    classname: Cutout
-    kwargs: {}
-    parameters:
-      dx:
-        function: '1.2'
-        parameter: dy1
-      dy:
-        function: '41'
-        parameter: dy1
-  pinhole1:
-    classname: Cutout
-    kwargs: {}
-    parameters:
-      dx:
-        function: '1.2'
-        parameter: dy1
-      dy:
-        function: '30'
-        parameter: dy1
-  pinhole2:
-    classname: Cutout
-    kwargs: {}
-    parameters:
-      dx:
-        function: '1.2'
-        parameter: dy1
-      dy:
-        function: '41'
-        parameter: dy1
-  pinhole3:
-    classname: Cutout
-    kwargs: {}
-    parameters:
-      dx:
-        function: '1.2'
-        parameter: dy1
-      dy:
-        function: '30'
-        parameter: dy1
   powerhole:
     classname: Cutout
     kwargs: {}
     parameters:
       dx:
-        function: x
         parameter: dy1
       dy:
-        function: x+17
-        parameter: dy1
+        function: getDim(x, 'height')/1.75
+        parameter: brains
   servohole0:
     classname: Cutout
     kwargs: {}
@@ -185,15 +146,5 @@ subcomponents:
         function: x-5
         parameter: dy1
       dy:
-        function: x+12
-        parameter: dy1
-  servohole1:
-    classname: Cutout
-    kwargs: {}
-    parameters:
-      dx:
-        function: x-5
-        parameter: dy1
-      dy:
-        function: x+12
-        parameter: dy1
+        function: getDim(x, 'height')/1.75
+        parameter: brains
diff --git a/rocolib/library/TwoWheels.yaml b/rocolib/library/TwoWheels.yaml
index f5b31d6c656ca0f3b1fb89dc4ec3e2e832624c4d..ddbaf988f3975d52340f001cc703f65b26f2d04b 100644
--- a/rocolib/library/TwoWheels.yaml
+++ b/rocolib/library/TwoWheels.yaml
@@ -115,7 +115,7 @@ parameters:
       units: degrees
       valueType: (float, int)
   height:
-    defaultValue: 48
+    defaultValue: 36
     spec:
       minValue: 36
       units: mm
@@ -123,13 +123,13 @@ parameters:
   length:
     defaultValue: 65
     spec:
-      minValue: 60
+      minValue: 65
       units: mm
       valueType: (float, int)
   width:
     defaultValue: 60
     spec:
-      minValue: 51
+      minValue: 60
       units: mm
       valueType: (float, int)
 source: ..\builders\TwoWheelsBuilder.py
diff --git a/rocolib/library/Wheel.yaml b/rocolib/library/Wheel.yaml
index 972d3858e838f3dcb7d91c8f2e289c74ff5b69c7..a63097a42b8527df0f97d6d5d4e3481dcf9caaea 100644
--- a/rocolib/library/Wheel.yaml
+++ b/rocolib/library/Wheel.yaml
@@ -6,48 +6,6 @@ connections:
     - face
   - {}
 interfaces:
-  beam.botedge0:
-    interface: beam.botedge0
-    subcomponent: drive
-  beam.botedge1:
-    interface: beam.botedge1
-    subcomponent: drive
-  beam.botedge2:
-    interface: beam.botedge2
-    subcomponent: drive
-  beam.botedge3:
-    interface: beam.botedge3
-    subcomponent: drive
-  beam.face0:
-    interface: beam.face0
-    subcomponent: drive
-  beam.face1:
-    interface: beam.face1
-    subcomponent: drive
-  beam.face2:
-    interface: beam.face2
-    subcomponent: drive
-  beam.face3:
-    interface: beam.face3
-    subcomponent: drive
-  beam.slotedge:
-    interface: beam.slotedge
-    subcomponent: drive
-  beam.tabedge:
-    interface: beam.tabedge
-    subcomponent: drive
-  beam.topedge0:
-    interface: beam.topedge0
-    subcomponent: drive
-  beam.topedge1:
-    interface: beam.topedge1
-    subcomponent: drive
-  beam.topedge2:
-    interface: beam.topedge2
-    subcomponent: drive
-  beam.topedge3:
-    interface: beam.topedge3
-    subcomponent: drive
   botedge0:
     interface: botedge0
     subcomponent: drive
diff --git a/rocolib/utils/dimensions.py b/rocolib/utils/dimensions.py
index cc791e9834ee2228eb3a3d0357f61061da061095..1a392659aa7274264bfd1172d27becf3b435e53d 100644
--- a/rocolib/utils/dimensions.py
+++ b/rocolib/utils/dimensions.py
@@ -39,16 +39,18 @@ dims["nodeMCU"] = { "type" : "brains",
     "colsep"    : 0.9 * 25.4,
 }
 
+#48 before
 dims["esp32stack"] = { "type" : "brains",
     "length"    : 51,
     "width"     : 24,
-    "height"    : 48,
+    "height"    : 36,
     "nrows"     : 16,
     "ncols"     : 2,
     "rowsep"    : 2.5,
     "colsep"    : 20,
 }
 
+
 '''
 Servo dimension parameters: