diff --git a/rocolib/builders/BoatPointFlatBuilder.py b/rocolib/builders/BoatPointFlatBuilder.py
new file mode 100644
index 0000000000000000000000000000000000000000..d01e0e219b6af0bb62b0541e46fd1d3301f1e0ac
--- /dev/null
+++ b/rocolib/builders/BoatPointFlatBuilder.py
@@ -0,0 +1,17 @@
+from rocolib.api.components.Component import Component
+
+c = Component()
+
+c.addSubcomponent("boat","SimpleUChannel", inherit=True, prefix=None)
+c.addSubcomponent("bow","BoatPoint")
+c.addSubcomponent("stern","BoatPoint")
+
+c.addConstraint(("stern", "point"), "width", "0")
+
+c.join(("boat", "top"), ("bow", "edge"))
+c.join(("boat", "bot"), ("stern", "edge"))
+
+c.inheritInterface("portedge", ("boat", "ledge"))
+c.inheritInterface("staredge", ("boat", "redge"))
+
+c.toLibrary("BoatBaseFlat")
diff --git a/rocolib/library/BoatBaseFlat.yaml b/rocolib/library/BoatBaseFlat.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..50f09b37e25af7c5cd5b3856ea8277a20ab3cbfe
--- /dev/null
+++ b/rocolib/library/BoatBaseFlat.yaml
@@ -0,0 +1,130 @@
+connections:
+  connection0:
+  - - boat
+    - top
+  - - bow
+    - edge
+  - {}
+  connection1:
+  - - boat
+    - bot
+  - - stern
+    - edge
+  - {}
+interfaces:
+  portedge:
+    interface: ledge
+    subcomponent: boat
+  staredge:
+    interface: redge
+    subcomponent: boat
+parameters:
+  _dx:
+    defaultValue: 0
+    spec:
+      minValue: null
+      units: mm
+      valueType: (float, int)
+  _dy:
+    defaultValue: 0
+    spec:
+      minValue: null
+      units: mm
+      valueType: (float, int)
+  _dz:
+    defaultValue: 0
+    spec:
+      minValue: null
+      units: mm
+      valueType: (float, int)
+  _q_a:
+    defaultValue: 1
+    spec:
+      maxValue: 1
+      minValue: -1
+      valueType: (int, float)
+  _q_i:
+    defaultValue: 0
+    spec:
+      maxValue: 1
+      minValue: -1
+      valueType: (int, float)
+  _q_j:
+    defaultValue: 0
+    spec:
+      maxValue: 1
+      minValue: -1
+      valueType: (int, float)
+  _q_k:
+    defaultValue: 0
+    spec:
+      maxValue: 1
+      minValue: -1
+      valueType: (int, float)
+  depth:
+    defaultValue: 20
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
+  length:
+    defaultValue: 100
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
+  width:
+    defaultValue: 50
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
+source: ..\builders\BoatPointFlatBuilder.py
+subcomponents:
+  boat:
+    classname: SimpleUChannel
+    kwargs: {}
+    parameters:
+      _dx:
+        parameter: _dx
+      _dy:
+        parameter: _dy
+      _dz:
+        parameter: _dz
+      _q_a:
+        parameter: _q_a
+      _q_i:
+        parameter: _q_i
+      _q_j:
+        parameter: _q_j
+      _q_k:
+        parameter: _q_k
+      depth:
+        parameter: depth
+      length:
+        parameter: length
+      width:
+        parameter: width
+  bow:
+    classname: BoatPoint
+    kwargs: {}
+    parameters:
+      depth:
+        parameter: depth
+        subcomponent: boat
+      width:
+        parameter: width
+        subcomponent: boat
+  stern:
+    classname: BoatPoint
+    kwargs: {}
+    parameters:
+      depth:
+        parameter: depth
+        subcomponent: boat
+      point:
+        function: '0'
+        parameter: width
+      width:
+        parameter: width
+        subcomponent: boat