diff --git a/dotparse.cabal b/dotparse.cabal
--- a/dotparse.cabal
+++ b/dotparse.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: dotparse
-version: 0.1.2.3
+version: 0.1.3.0
 license: BSD-3-Clause
 license-file: LICENSE
 copyright: Tony Day (c) 2020
@@ -30,8 +30,8 @@
 tested-with:
   ghc ==9.6.7
   ghc ==9.8.4
-  ghc ==9.10.1
-  ghc ==9.12.2
+  ghc ==9.10.3
+  ghc ==9.12.3
 
 extra-doc-files:
   ChangeLog.md
diff --git a/src/DotParse/Types.hs b/src/DotParse/Types.hs
--- a/src/DotParse/Types.hs
+++ b/src/DotParse/Types.hs
@@ -578,9 +578,9 @@
 
 -- | add a graphviz statement to a 'Graph'
 addStatement :: Statement -> Graph -> Graph
-addStatement (StatementNode n) g = g & #nodes %~ (<> [n])
-addStatement (StatementEdge e) g = g & #edges %~ (<> [e])
-addStatement (StatementSubGraph s) g = g & #subgraphs %~ (<> [s])
+addStatement (StatementNode n) g = g & #nodes %~ (n :)
+addStatement (StatementEdge e) g = g & #edges %~ (e :)
+addStatement (StatementSubGraph s) g = g & #subgraphs %~ (s :)
 addStatement (StatementAttribute (AttributeStatement GraphType as)) g = g & #graphAttributes %~ (<> as)
 addStatement (StatementAttribute (AttributeStatement NodeType as)) g = g & #nodeAttributes %~ (<> as)
 addStatement (StatementAttribute (AttributeStatement EdgeType as)) g = g & #edgeAttributes %~ (<> as)
@@ -588,7 +588,7 @@
 
 -- | add a list of graphviz statements to a 'Graph'
 addStatements :: [Statement] -> Graph -> Graph
-addStatements ss g = Prelude.foldr addStatement g ss
+addStatements ss g = Prelude.foldr addStatement g (Prelude.reverse ss)
 
 -- | run a dot string through graphviz, supplying arguments and collecting stdout
 processDotWith :: Directed -> [String] -> ByteString -> IO ByteString
