diff --git a/geojson.cabal b/geojson.cabal
--- a/geojson.cabal
+++ b/geojson.cabal
@@ -1,10 +1,10 @@
 name:                   geojson
-version:                4.1.1
+version:                4.1.2
 license:                BSD3
 license-file:           LICENCE
 author:                 Dom De Re
 maintainer:             Andrew Newman
-copyright:              Copyright (C) 2013-2023
+copyright:              Copyright (C) 2013-2025
 synopsis:               A thin GeoJSON Layer above the aeson library
 category:               Data
 description:            A thin GeoJSON Layer above the aeson library.
@@ -27,17 +27,17 @@
 source-repository       this
     type:               git
     location:           https://github.com/zellige/hs-geojson.git
-    tag:                4.1.1
+    tag:                4.1.2
 
 library
     hs-source-dirs:     src
     build-depends:      base            >= 4.9 && < 5
                     ,   aeson           >= 2.0.1.0 && < 3
-                    ,   containers      >= 0.5.7.1 && < 0.7
-                    ,   deepseq         >= 1.4.2.0 && < 1.5
+                    ,   containers      >= 0.5.7.1 && < 0.9
+                    ,   deepseq         >= 1.4.2.0 && < 1.6
                     ,   lens            >= 4.11
                     ,   semigroups      >= 0.16
-                    ,   text            >= 1.2.3.0 && < 2.1
+                    ,   text            >= 1.2.3.0 && < 2.2
                     ,   scientific      >= 0.2.0 && < 0.4
                     ,   transformers    >= 0.3 && < 0.7
                     ,   validation      >= 1 && < 2.0
@@ -68,14 +68,14 @@
     type:               exitcode-stdio-1.0
     build-depends:      base              >= 4.9 && < 5
                     ,   aeson             >= 2.0.1.0 && < 3
-                    ,   bytestring        >= 0.10.8.1 && < 0.12
-                    ,   containers        >= 0.5.7.1  && < 0.7
+                    ,   bytestring        >= 0.10.8.1 && < 0.13
+                    ,   containers        >= 0.5.7.1  && < 0.8
                     ,   geojson
-                    ,   hspec             >= 2.5 && < 2.10
-                    ,   tasty             >= 0.8 && <0.13 || >=1.0 && <1.5
+                    ,   hspec             >= 2.5 && < 2.12
+                    ,   tasty             >= 0.8 && <0.13 || >=1.0 && <1.6
                     ,   tasty-hspec       >= 1.2 && < 1.3
-                    ,   tasty-quickcheck  >= 0.3 && <0.9 || >=0.9.1 && <0.11
-                    ,   text              >= 1.2.3.0  && < 2.1
+                    ,   tasty-quickcheck  >= 0.3 && <0.9 || >=0.9.1 && <0.12
+                    ,   text              >= 1.2.3.0  && < 2.2
                     ,   validation        >= 1 && < 2.0
     other-modules:      Arbitrary
                     ,   Fixture
diff --git a/src/Data/LineString.hs b/src/Data/LineString.hs
--- a/src/Data/LineString.hs
+++ b/src/Data/LineString.hs
@@ -172,6 +172,10 @@
   --  foldr :: (a -> b -> b) -> b -> LineString a -> b
   foldr f u (LineString x y zs) = f x (f y (Foldable.foldr f u zs))
 
+  -- we implement these methods for improved performance
+  null _ = False
+  length (LineString _ _ zs) = 2 + Sequence.length zs
+
 instance Traversable LineString where
   --  sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
   sequenceA (LineString fx fy fzs) = LineString <$> fx <*> fy <*> sequenceA fzs
diff --git a/src/Data/LinearRing.hs b/src/Data/LinearRing.hs
--- a/src/Data/LinearRing.hs
+++ b/src/Data/LinearRing.hs
@@ -200,6 +200,10 @@
   --  foldr :: (a -> b -> b) -> b -> LinearRing a -> b
   foldr f u (LinearRing x y z ws) = f x (f y (f z (Foldable.foldr f (f x u) ws)))
 
+  -- we implement these methods for improved performance
+  null _ = False
+  length (LinearRing _ _ _ ws) = 4 + Sequence.length ws
+
 -- |
 -- When traversing this Structure, the Applicative context
 -- of the last element will be appended to the end to close the loop
diff --git a/src/Data/SeqHelper.hs b/src/Data/SeqHelper.hs
--- a/src/Data/SeqHelper.hs
+++ b/src/Data/SeqHelper.hs
@@ -26,7 +26,7 @@
 sequenceTail _ = Sequence.empty
 {-# INLINE sequenceTail #-}
 
-removeNextDuplicate :: Eq a => Sequence.Seq a -> Sequence.Seq a
+removeNextDuplicate :: (Eq a) => Sequence.Seq a -> Sequence.Seq a
 removeNextDuplicate Sequence.Empty = Sequence.empty
 removeNextDuplicate xs@(_ Sequence.:<| Sequence.Empty) = xs
 removeNextDuplicate (x Sequence.:<| tailXs@(y Sequence.:<| _))
