diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,4 +8,12 @@
 
 ## Unreleased
 
-## 0.1.0.0 - YYYY-MM-DD
+## 0.5.0.1
+
+### Changed
+
+- Svg Path segments that originate from the same edge should no longer contain breaks
+
+## 0.5.0.0
+
+- Initial Release
diff --git a/src/Waterfall/SVG/ToSVG.hs b/src/Waterfall/SVG/ToSVG.hs
--- a/src/Waterfall/SVG/ToSVG.hs
+++ b/src/Waterfall/SVG/ToSVG.hs
@@ -11,7 +11,7 @@
 import qualified Waterfall
 import qualified Graphics.Svg as Svg
 import qualified Graphics.Svg.CssTypes as Svg.Css
-import Linear (_xy, _x, _y)
+import Linear (_xy, _x, _y, V2 (..), nearZero)
 import Control.Lens ((^.), (&), (.~))
 import Foreign.Ptr (Ptr)
 import Control.Monad ((<=<)) 
@@ -39,10 +39,9 @@
 
 lineToPathCommand :: Ptr TopoDS.Edge -> IO [Svg.PathCommand]
 lineToPathCommand edge = do
-    (s, e) <- Internal.Edges.edgeEndpoints edge
+    (_s, e) <- Internal.Edges.edgeEndpoints edge
     return 
-        [ Svg.MoveTo Svg.OriginAbsolute . pure $ s ^. _xy
-        , Svg.LineTo Svg.OriginAbsolute . pure $ e ^. _xy
+        [ Svg.LineTo Svg.OriginAbsolute . pure $ e ^. _xy
         ]
 
 bezierCurveToPathCommand :: Ptr TopoDS.Edge -> Ptr (Handle Geom.BezierCurve) -> Acquire [Svg.PathCommand]
@@ -54,18 +53,12 @@
         else do 
             poles <- traverse ((liftIO . gpPntToV3) <=< Geom.BezierCurve.pole bezier) [1..nbPoles]
             case poles of 
-                [s, e] -> return
-                        [ Svg.MoveTo Svg.OriginAbsolute . pure $ s ^. _xy
-                        , Svg.LineTo Svg.OriginAbsolute . pure $ e ^. _xy
-                        ]
-                [s, cp, e] -> return
-                        [ Svg.MoveTo Svg.OriginAbsolute . pure $ s ^. _xy
-                        , Svg.QuadraticBezier Svg.OriginAbsolute . pure $ (cp ^. _xy, e ^. _xy)
-                        ]
-                [s, cp1, cp2, e] -> return
-                        [ Svg.MoveTo Svg.OriginAbsolute . pure $ s ^. _xy
-                        , Svg.CurveTo Svg.OriginAbsolute . pure $ (cp1 ^. _xy, cp2 ^. _xy, e ^. _xy)
-                        ]
+                [_s, e] -> return . pure .
+                        Svg.LineTo Svg.OriginAbsolute . pure $ e ^. _xy
+                [_s, cp, e] -> return . pure .
+                        Svg.QuadraticBezier Svg.OriginAbsolute . pure $ (cp ^. _xy, e ^. _xy)
+                [_s, cp1, cp2, e] -> return . pure .
+                        Svg.CurveTo Svg.OriginAbsolute . pure $ (cp1 ^. _xy, cp2 ^. _xy, e ^. _xy)
                 _ -> liftIO $ discretizedEdgePathCommand edge
 
 bezierToPathCommand :: Ptr TopoDS.Edge -> Ptr BRepAdaptor.Curve.Curve -> Acquire [Svg.PathCommand]
@@ -110,22 +103,28 @@
     
 discretizedEdgePathCommand :: Ptr TopoDS.Edge -> IO [Svg.PathCommand]
 discretizedEdgePathCommand edge = do
-    s <- Internal.Edges.edgeValue edge 0 
     ps <- traverse (Internal.Edges.edgeValue edge . (/10) .  fromIntegral) [1..(10::Integer)]
-    return 
-        [ Svg.MoveTo Svg.OriginAbsolute . pure $ s ^. _xy
-        , Svg.LineTo Svg.OriginAbsolute $ (^. _xy) <$> ps
-        ]
+    return . pure .
+        Svg.LineTo Svg.OriginAbsolute $ (^. _xy) <$> ps
 
-edgeToPathCommand :: Ptr TopoDS.Edge -> [Svg.PathCommand]
-edgeToPathCommand edge = Internal.Finalizers.unsafeFromAcquire $ do
+edgeToPathCommand :: Maybe (V2 Double) -> Ptr TopoDS.Edge -> (Maybe (V2 Double), [Svg.PathCommand])
+edgeToPathCommand curPos edge = Internal.Finalizers.unsafeFromAcquire $ do
+    startPos <- liftIO $ (^. _xy) <$> Internal.Edges.edgeValue edge 0
+    endPos <- liftIO $ (^. _xy) <$> Internal.Edges.edgeValue edge 1
+    let hasntMoved = nearZero . (startPos -) <$> curPos
+    let addMoveCommand = 
+            case hasntMoved of 
+                Just True -> id
+                _ -> ((Svg.MoveTo Svg.OriginAbsolute . pure $ startPos) :)
     adaptor <- BRepAdaptor.Curve.fromEdge edge
     curveType <- liftIO $ BRepAdaptor.Curve.curveType adaptor
-    case curveType of 
-        GeomAbs.CurveType.Line -> liftIO $ lineToPathCommand edge
-        GeomAbs.CurveType.BezierCurve -> bezierToPathCommand edge adaptor
-        -- GeomAbs.CurveType.BSplineCurve -> There's some argument for special casing this, but we don't need to
-        _ -> approximateCurveToPathCommand edge
+    thisSegment <-
+        case curveType of 
+            GeomAbs.CurveType.Line -> liftIO $ lineToPathCommand edge
+            GeomAbs.CurveType.BezierCurve -> bezierToPathCommand edge adaptor
+            -- GeomAbs.CurveType.BSplineCurve -> There's some argument for special casing this, but we don't need to
+            _ -> approximateCurveToPathCommand edge
+    return (Just endPos, addMoveCommand thisSegment)
 
 -- | Convert a `Waterfall.Path2D` into a list of `Svg.PathCommands`
 path2DToPathCommands :: Waterfall.Path2D -> [Svg.PathCommand]
@@ -134,7 +133,10 @@
     Internal.Path.Common.SinglePointRawPath _ -> []
     Internal.Path.Common.ComplexRawPath wire -> 
         Internal.Finalizers.unsafeFromAcquireT $
-            foldMap edgeToPathCommand <$> Internal.Edges.wireEdges wire
+            mconcat 
+                . fmap snd
+                . scanr (flip (edgeToPathCommand . fst)) (Nothing, []) 
+                <$> Internal.Edges.wireEdges wire
 
 -- | Convert a `Waterfall.Diagram` into an SVG document
 -- 
diff --git a/waterfall-cad-svg.cabal b/waterfall-cad-svg.cabal
--- a/waterfall-cad-svg.cabal
+++ b/waterfall-cad-svg.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           waterfall-cad-svg
-version:        0.5.0.0
+version:        0.5.0.1
 synopsis:       Declarative CAD/Solid Modeling Library, SVG Support
 description:    Please see the README on GitHub at <https://github.com/joe-warren/opencascade-hs#readme>
 category:       Graphics
@@ -42,9 +42,9 @@
     , base >=4.7 && <5
     , lens >5 && <6
     , linear >=1.0 && <2.0
-    , opencascade-hs >=0.5.0.0 && <0.6
+    , opencascade-hs >=0.5.0.1 && <0.6
     , resourcet >=1.2 && <1.4
     , svg-tree >=0.6 && <1.0
     , text >=1.2 && <3.0
-    , waterfall-cad >=0.5.0.0 && <0.6
+    , waterfall-cad >=0.5.0.1 && <0.6
   default-language: Haskell2010
