diff --git a/rocolib/builders/boat/BatteryStackHolderBuilder.py b/rocolib/builders/boat/BatteryStackHolderBuilder.py
index 5bedcae931b7abd15bb5625ec5f72d6f9c2933ff..3bbd56d4bffdce0b4737f90365224de40eff2947 100644
--- a/rocolib/builders/boat/BatteryStackHolderBuilder.py
+++ b/rocolib/builders/boat/BatteryStackHolderBuilder.py
@@ -1,18 +1,24 @@
 from rocolib.api.components.Component import Component
 from rocolib.api.Function import Function
 
+#A 5-sided rectangular beam enclosure
+
 c = Component()
 
 c.addParameter("numBatteries", 3, paramType="count", minValue=1, maxValue=10)
 
+c.addParameter("batterylength", 60, paramType="length")
+c.addParameter("batterywidth", 17, paramType="length")
+c.addParameter("batterydepth", 9, paramType="length")
+
 c.addSubcomponent("holder", "SimpleRectBeam", inherit=True, prefix=None)
-c.addConstConstraint(("holder", "length"), 60)
-c.addConstraint(("holder", "width"), "numBatteries", "9 * x")
-c.addConstConstraint(("holder", "depth"), 17)
+c.addConstraint(("holder", "length"), "batterylength")
+c.addConstraint(("holder", "width"), ("numBatteries", "batterydepth"), "x[0] * x[1]")
+c.addConstraint(("holder", "depth"), "batterywidth")
 
 c.addSubcomponent("bottom", "Rectangle", inherit=True)
-c.addConstraint(("bottom", "l"), ("numBatteries"), "9 * x")
-c.addConstConstraint(("bottom", "w"), 17)
+c.addConstraint(("bottom", "l"), ("numBatteries", "batterydepth"), "x[0] * x[1]")
+c.addConstraint(("bottom", "w"), "batterywidth")
 
 c.addConnection(("bottom", "t"), ("holder", "botedge0"), angle=90)
 c.addConnection(("bottom", "l"), ("holder", "botedge1"), tabWidth=5, angle=90)
diff --git a/rocolib/builders/boat/BatteryStackMountBuilder.py b/rocolib/builders/boat/BatteryStackMountBuilder.py
index 7757ba6e066239bf00bb7fec549be76d040a068d..98db012bfc74d8d2d24363890555f62f29c75d48 100644
--- a/rocolib/builders/boat/BatteryStackMountBuilder.py
+++ b/rocolib/builders/boat/BatteryStackMountBuilder.py
@@ -1,6 +1,8 @@
 from rocolib.api.components.Component import Component
 from rocolib.api.Function import Function
 
+#A 4-sided rectangular beam with a cutout for the battery terminals and wings for mounting
+
 c = Component()
 
 c.addParameter("boatwidth", 90, paramType="length")
diff --git a/rocolib/library/BatteryStackHolder.yaml b/rocolib/library/BatteryStackHolder.yaml
index ae7b3d02b7f34ad18421873df222bc01c82b4259..dd4bc3add430a05357fcc507d085c096abba0637 100644
--- a/rocolib/library/BatteryStackHolder.yaml
+++ b/rocolib/library/BatteryStackHolder.yaml
@@ -74,6 +74,24 @@ parameters:
     defaultValue: true
     spec:
       valueType: bool
+  batterydepth:
+    defaultValue: 9
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
+  batterylength:
+    defaultValue: 60
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
+  batterywidth:
+    defaultValue: 17
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
   bottom._dx:
     defaultValue: 0
     spec:
@@ -140,7 +158,7 @@ parameters:
       minValue: 0
       units: mm
       valueType: (float, int)
-source: ../builders/boat/BatteryStackHolder.py
+source: ../builders/boat/BatteryStackHolderBuilder.py
 subcomponents:
   bottom:
     classname: Rectangle
@@ -161,9 +179,12 @@ subcomponents:
       _q_k:
         parameter: bottom._q_k
       l:
-        function: 9 * x
-        parameter: numBatteries
-      w: 17
+        function: x[0] * x[1]
+        parameter: &id001
+        - numBatteries
+        - batterydepth
+      w:
+        parameter: batterywidth
   holder:
     classname: SimpleRectBeam
     kwargs: {}
@@ -184,8 +205,10 @@ subcomponents:
         parameter: _q_k
       addTabs:
         parameter: addTabs
-      depth: 17
-      length: 60
+      depth:
+        parameter: batterywidth
+      length:
+        parameter: batterylength
       width:
-        function: 9 * x
-        parameter: numBatteries
+        function: x[0] * x[1]
+        parameter: *id001