diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
index d920335..e1efb4b 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.core.partitioning;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -34,11 +33,7 @@
  * @param <S> Convex subhyperplane implementation type
  */
 public abstract class AbstractConvexHyperplaneBoundedRegion<P extends Point<P>, S extends ConvexSubHyperplane<P>>
-    implements HyperplaneBoundedRegion<P>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190812L;
-
+    implements HyperplaneBoundedRegion<P> {
     /** List of boundaries for the region. */
     private final List<S> boundaries;
 
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplane.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplane.java
index 6bfb2b8..7f9a43c 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplane.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplane.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.core.partitioning;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 import org.apache.commons.geometry.core.Region;
 import org.apache.commons.geometry.core.RegionLocation;
@@ -31,11 +29,7 @@
 public abstract class AbstractEmbeddingSubHyperplane<
     P extends Point<P>,
     S extends Point<S>,
-    H extends EmbeddingHyperplane<P, S>> implements SubHyperplane<P>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190729L;
-
+    H extends EmbeddingHyperplane<P, S>> implements SubHyperplane<P> {
     /** {@inheritDoc} */
     @Override
     public boolean isFull() {
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractHyperplane.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractHyperplane.java
index 03d1723..08bc047 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractHyperplane.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractHyperplane.java
@@ -16,19 +16,13 @@
  */
 package org.apache.commons.geometry.core.partitioning;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 import org.apache.commons.geometry.core.precision.DoublePrecisionContext;
 
 /** Base class for hyperplane implementations.
  * @param <P> Point implementation type
  */
-public abstract class AbstractHyperplane<P extends Point<P>> implements Hyperplane<P>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 1L;
-
+public abstract class AbstractHyperplane<P extends Point<P>> implements Hyperplane<P> {
     /** Precision object used to perform floating point comparisons. */
     private final DoublePrecisionContext precision;
 
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractBSPTree.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractBSPTree.java
index 157eb16..cb63df2 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractBSPTree.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractBSPTree.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.core.partitioning.bsp;
 
-import java.io.Serializable;
 import java.util.Deque;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -37,11 +36,7 @@
  * @param <N> BSP tree node implementation type
  */
 public abstract class AbstractBSPTree<P extends Point<P>, N extends AbstractBSPTree.AbstractNode<P, N>>
-    implements BSPTree<P, N>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190330L;
-
+    implements BSPTree<P, N> {
     /** The default number of levels to print when creating a string representation of the tree. */
     private static final int DEFAULT_TREE_STRING_MAX_DEPTH = 8;
 
@@ -779,11 +774,7 @@
      * @param <N> BSP tree node implementation type
      */
     public abstract static class AbstractNode<P extends Point<P>, N extends AbstractNode<P, N>>
-        implements BSPTree.Node<P, N>, Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190225L;
-
+        implements BSPTree.Node<P, N> {
         /** The owning tree instance. */
         private final AbstractBSPTree<P, N> tree;
 
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java
index 5bce738..93191bc 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.core.partitioning.bsp;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -44,10 +43,6 @@
         P extends Point<P>,
         N extends AbstractRegionBSPTree.AbstractRegionNode<P, N>>
     extends AbstractBSPTree<P, N> implements HyperplaneBoundedRegion<P> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 1L;
-
     /** Value used to indicate an unknown size. */
     private static final double UNKNOWN_SIZE = -1.0;
 
@@ -560,10 +555,6 @@
      */
     public abstract static class AbstractRegionNode<P extends Point<P>, N extends AbstractRegionNode<P, N>>
         extends AbstractBSPTree.AbstractNode<P, N> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 1L;
-
         /** The location for the node. This will only be set on leaf nodes. */
         private RegionLocation location;
 
@@ -799,10 +790,6 @@
      */
     protected static class BoundaryProjector<P extends Point<P>, N extends AbstractRegionNode<P, N>>
         extends ClosestFirstVisitor<P, N> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190504L;
-
         /** The projected point. */
         private P projected;
 
@@ -878,11 +865,7 @@
      * of the combined computation.
      * @param <P> Point implementation type
      */
-    protected static class RegionSizeProperties<P extends Point<P>> implements Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190428L;
-
+    protected static class RegionSizeProperties<P extends Point<P>> {
         /** The size of the region. */
         private final double size;
 
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AttributeBSPTree.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AttributeBSPTree.java
index 065f08f..59c2874 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AttributeBSPTree.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AttributeBSPTree.java
@@ -25,10 +25,6 @@
  */
 public class AttributeBSPTree<P extends Point<P>, T>
     extends AbstractBSPTree<P, AttributeBSPTree.AttributeNode<P, T>> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190306L;
-
     /** The initial attribute value to use for newly created nodes. */
     private final T initialNodeAttribute;
 
@@ -76,10 +72,6 @@
      */
     public static class AttributeNode<P extends Point<P>, T>
         extends AbstractBSPTree.AbstractNode<P, AttributeNode<P, T>> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 1L;
-
         /** The node attribute. */
         private T attribute;
 
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/BSPTreeVisitor.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/BSPTreeVisitor.java
index 8fc0ffd..6e5d689 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/BSPTreeVisitor.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/BSPTreeVisitor.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.core.partitioning.bsp;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 
 /** Interface for visiting the nodes in a {@link BSPTree} or {@link BSPSubtree}.
@@ -86,11 +84,7 @@
      * @param <N> BSP tree node implementation type
      */
     abstract class TargetPointVisitor<P extends Point<P>, N extends BSPTree.Node<P, N>>
-        implements BSPTreeVisitor<P, N>, Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190504L;
-
+        implements BSPTreeVisitor<P, N> {
         /** Point serving as the target of the traversal. */
         private final P target;
 
@@ -119,10 +113,6 @@
      */
     abstract class ClosestFirstVisitor<P extends Point<P>, N extends BSPTree.Node<P, N>>
         extends TargetPointVisitor<P, N> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190504L;
-
         /** Simple constructor.
          * @param target the point serving as the target for the traversal
          */
@@ -150,10 +140,6 @@
      */
     abstract class FarthestFirstVisitor<P extends Point<P>, N extends BSPTree.Node<P, N>>
         extends TargetPointVisitor<P, N> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190504L;
-
         /** Simple constructor.
          * @param target the point serving as the target for the traversal
          */
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/RegionCutBoundary.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/RegionCutBoundary.java
index a165381..3469afa 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/RegionCutBoundary.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/RegionCutBoundary.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.core.partitioning.bsp;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 import org.apache.commons.geometry.core.partitioning.SubHyperplane;
 
@@ -31,11 +29,7 @@
  *
  * @param <P> Point implementation type
  */
-public final class RegionCutBoundary<P extends Point<P>> implements Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190310L;
-
+public final class RegionCutBoundary<P extends Point<P>> {
     /** Portion of the region cut subhyperplane with its plus side facing the
      * inside of the region.
      */
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/DoublePrecisionContext.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/DoublePrecisionContext.java
index 7ca33ab..f8b047e 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/DoublePrecisionContext.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/DoublePrecisionContext.java
@@ -16,16 +16,11 @@
  */
 package org.apache.commons.geometry.core.precision;
 
-import java.io.Serializable;
 import java.util.Comparator;
 
 /** Class encapsulating the concept of comparison operations for doubles.
  */
-public abstract class DoublePrecisionContext implements Comparator<Double>, Serializable {
-
-    /** Serializable identifier. */
-    private static final long serialVersionUID = 20190121L;
-
+public abstract class DoublePrecisionContext implements Comparator<Double> {
     /** Return true if the given values are considered equal to each other.
      * @param a first value
      * @param b second value
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContext.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContext.java
index 0d69c8b..1bc6213 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContext.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/precision/EpsilonDoublePrecisionContext.java
@@ -29,10 +29,6 @@
  * @see Precision#compareTo(double, double, double)
  */
 public class EpsilonDoublePrecisionContext extends DoublePrecisionContext {
-
-    /** Serializable identifier. */
-    private static final long serialVersionUID = 20190119L;
-
     /** Epsilon value. */
     private final double epsilon;
 
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestBSPTree.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestBSPTree.java
index b04ca59..1540788 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestBSPTree.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestBSPTree.java
@@ -22,10 +22,6 @@
 /** BSP Tree implementation class for testing purposes.
  */
 public class TestBSPTree extends AbstractBSPTree<TestPoint2D, TestBSPTree.TestNode> {
-
-    /** Serializable UID */
-    private static final long serialVersionUID = 20190225L;
-
     /** {@inheritDoc} */
     @Override
     protected TestNode createNode() {
@@ -47,10 +43,6 @@
     /** BSP Tree node class for {@link TestBSPTree}.
      */
     public static class TestNode extends AbstractBSPTree.AbstractNode<TestPoint2D,TestNode> {
-
-        /** Serializable UID */
-        private static final long serialVersionUID = 20190225L;
-
         public TestNode(AbstractBSPTree<TestPoint2D, TestNode> tree) {
             super(tree);
         }
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLine.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLine.java
index 8a19ed5..e70f869 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLine.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLine.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.core.partition.test;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Transform;
 import org.apache.commons.geometry.core.partitioning.EmbeddingHyperplane;
 import org.apache.commons.geometry.core.partitioning.Hyperplane;
@@ -26,7 +24,7 @@
 /** Class representing a line in two dimensional Euclidean space. This
  * class should only be used for testing purposes.
  */
-public class TestLine implements EmbeddingHyperplane<TestPoint2D, TestPoint1D>, Serializable {
+public class TestLine implements EmbeddingHyperplane<TestPoint2D, TestPoint1D> {
 
     /** Line pointing along the positive x-axis. */
     public static final TestLine X_AXIS = new TestLine(0, 0, 1, 0);
@@ -34,9 +32,6 @@
     /** Line pointing along the positive y-axis. */
     public static final TestLine Y_AXIS = new TestLine(0, 0, 0, 1);
 
-    /** Serializable UID */
-    private static final long serialVersionUID = 20190224L;
-
     /** X value of the normalized line direction. */
     private final double directionX;
 
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegment.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegment.java
index aa20dd7..b368dfa 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegment.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegment.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.core.partition.test;
 
-import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
 
@@ -30,11 +29,7 @@
 /** Class representing a line segment in two dimensional Euclidean space. This
  * class should only be used for testing purposes.
  */
-public class TestLineSegment implements ConvexSubHyperplane<TestPoint2D>, Serializable {
-
-    /** Serializable UID */
-    private static final long serialVersionUID = 20190224L;
-
+public class TestLineSegment implements ConvexSubHyperplane<TestPoint2D> {
     /** Abscissa of the line segment start point. */
     private final double start;
 
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegmentCollection.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegmentCollection.java
index a541a5d..1c9b60e 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegmentCollection.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestLineSegmentCollection.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.core.partition.test;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -31,11 +30,7 @@
 /** Class containing a collection line segments. This class should only be used for
  * testing purposes.
  */
-public class TestLineSegmentCollection implements SubHyperplane<TestPoint2D>, Serializable {
-
-    /** Serializable UID */
-    private static final long serialVersionUID = 20190303L;
-
+public class TestLineSegmentCollection implements SubHyperplane<TestPoint2D> {
     /** The collection of line-segments making up the subhyperplane.
      */
     private final List<TestLineSegment> segments;
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint1D.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint1D.java
index 7d353f0..59ce9a8 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint1D.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint1D.java
@@ -16,18 +16,12 @@
  */
 package org.apache.commons.geometry.core.partition.test;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 
 /** Class representing a point in one dimensional Euclidean space. This
  * class should only be used for testing purposes.
  */
-public class TestPoint1D implements Point<TestPoint1D>, Serializable {
-
-    /** Serializable UID */
-    private static final long serialVersionUID = 1L;
-
+public class TestPoint1D implements Point<TestPoint1D> {
     /** X coordinate */
     private final double x;
 
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint2D.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint2D.java
index e5e9b58..f3aebab 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint2D.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partition/test/TestPoint2D.java
@@ -16,14 +16,12 @@
  */
 package org.apache.commons.geometry.core.partition.test;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 
 /** Class representing a point in two dimensional Euclidean space. This
  * class should only be used for testing purposes.
  */
-public class TestPoint2D implements Point<TestPoint2D>, Serializable {
+public class TestPoint2D implements Point<TestPoint2D> {
 
     /** Instance representing the coordinates {@code (0, 0)} */
     public static final TestPoint2D ZERO = new TestPoint2D(0, 0);
@@ -34,9 +32,6 @@
     /** Instance representing the coordinates {@code (0, 1)} */
     public static final TestPoint2D PLUS_Y = new TestPoint2D(0, 1);
 
-    /** Serializable UID */
-    private static final long serialVersionUID = 20190224L;
-
     /** X coordinate */
     private final double x;
 
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplaneTest.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplaneTest.java
index eda55fa..a5c6ef2 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplaneTest.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/AbstractEmbeddingSubHyperplaneTest.java
@@ -82,10 +82,6 @@
     }
 
     private static class StubSubHyperplane extends AbstractEmbeddingSubHyperplane<TestPoint2D, TestPoint1D, TestLine> {
-
-        /** Serializable UID */
-        private static final long serialVersionUID = 20190729L;
-
         private StubRegion1D region = new StubRegion1D();
 
         @Override
diff --git a/commons-geometry-enclosing/src/main/java/org/apache/commons/geometry/enclosing/EnclosingBall.java b/commons-geometry-enclosing/src/main/java/org/apache/commons/geometry/enclosing/EnclosingBall.java
index 4186454..9ea604d 100644
--- a/commons-geometry-enclosing/src/main/java/org/apache/commons/geometry/enclosing/EnclosingBall.java
+++ b/commons-geometry-enclosing/src/main/java/org/apache/commons/geometry/enclosing/EnclosingBall.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.enclosing;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 
 /** This class represents a ball enclosing some points.
@@ -25,11 +23,7 @@
  * @see Point
  * @see Encloser
  */
-public class EnclosingBall<P extends Point<P>> implements Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20140126L;
-
+public class EnclosingBall<P extends Point<P>> {
     /** Center of the ball. */
     private final P center;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/EuclideanVector.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/EuclideanVector.java
index ccd810f..6695023 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/EuclideanVector.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/EuclideanVector.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 import org.apache.commons.geometry.core.Vector;
 import org.apache.commons.geometry.core.precision.DoublePrecisionContext;
@@ -31,10 +29,7 @@
  * @param <V> Vector implementation type
  */
 public abstract class EuclideanVector<V extends EuclideanVector<V>>
-    implements Vector<V>, Point<V>, Serializable {
-
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20181017L;
+    implements Vector<V>, Point<V> {
 
     /** Return the vector representing the displacement from this vector
      * to the given vector. This is exactly equivalent to {@code v.subtract(thisVector)}
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/MultiDimensionalEuclideanVector.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/MultiDimensionalEuclideanVector.java
index 3cd6365..85c1d27 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/MultiDimensionalEuclideanVector.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/MultiDimensionalEuclideanVector.java
@@ -23,10 +23,6 @@
  */
 public abstract class MultiDimensionalEuclideanVector<V extends MultiDimensionalEuclideanVector<V>>
         extends EuclideanVector<V> {
-
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20181017L;
-
     /** Get the projection of the instance onto the given base vector. The returned
      * vector is parallel to {@code base}. Vector projection and rejection onto
      * a given base are related by the equation
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/internal/AbstractPathConnector.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/internal/AbstractPathConnector.java
index 08b3a2f..1ab732d 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/internal/AbstractPathConnector.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/internal/AbstractPathConnector.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.internal;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.NavigableSet;
@@ -52,12 +51,7 @@
  * @param <E> Element type
  * @see ConnectableElement
  */
-public abstract class AbstractPathConnector<E extends AbstractPathConnector.ConnectableElement<E>>
-    implements Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191106L;
-
+public abstract class AbstractPathConnector<E extends AbstractPathConnector.ConnectableElement<E>> {
     /** List of path elements. */
     private final NavigableSet<E> pathElements = new TreeSet<>();
 
@@ -276,11 +270,7 @@
      * @see AbstractPathConnector
      */
     public abstract static class ConnectableElement<E extends ConnectableElement<E>>
-        implements Comparable<E>, Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191107L;
-
+        implements Comparable<E> {
         /** Next connected element. */
         private E next;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1D.java
index 25a0de0..b8e124f 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/AffineTransformMatrix1D.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.oned;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.internal.DoubleFunction1N;
 import org.apache.commons.geometry.euclidean.AbstractAffineTransformMatrix;
 import org.apache.commons.geometry.euclidean.exception.NonInvertibleTransformException;
@@ -33,11 +31,7 @@
 * </p>
 */
 public final class AffineTransformMatrix1D extends AbstractAffineTransformMatrix<Vector1D>
-    implements Transform1D, Serializable {
-
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20181006L;
-
+    implements Transform1D {
     /** The number of internal matrix elements. */
     private static final int NUM_ELEMENTS = 2;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Interval.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Interval.java
index 2003ddc..206f8c5 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Interval.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Interval.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.oned;
 
-import java.io.Serializable;
 import java.text.MessageFormat;
 
 import org.apache.commons.geometry.core.RegionLocation;
@@ -34,11 +33,7 @@
  *
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
-public final class Interval implements HyperplaneBoundedRegion<Vector1D>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190210L;
-
+public final class Interval implements HyperplaneBoundedRegion<Vector1D> {
     /** Interval instance representing the entire real number line. */
     private static final Interval FULL = new Interval(null, null);
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/OrientedPoint.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/OrientedPoint.java
index 51c993c..63a1698 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/OrientedPoint.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/OrientedPoint.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.oned;
 
-import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
@@ -42,11 +41,7 @@
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
 public final class OrientedPoint extends AbstractHyperplane<Vector1D>
-    implements Hyperplane<Vector1D>, Equivalency<OrientedPoint>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190210L;
-
+    implements Hyperplane<Vector1D>, Equivalency<OrientedPoint> {
     /** Hyperplane location as a point. */
     private final Vector1D point;
 
@@ -341,11 +336,7 @@
      * this is effectively a stub implementation, its main use being to allow for the correct functioning of
      * partitioning code.
      */
-    public static class SubOrientedPoint implements ConvexSubHyperplane<Vector1D>, Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190405L;
-
+    public static class SubOrientedPoint implements ConvexSubHyperplane<Vector1D> {
         /** The underlying hyperplane for this instance. */
         private final OrientedPoint hyperplane;
 
@@ -486,11 +477,7 @@
      * this is effectively a stub implementation since there are no subspaces of 1D space. Its primary use is to allow
      * for the correct functioning of partitioning code.
      */
-    public static final class SubOrientedPointBuilder implements SubHyperplane.Builder<Vector1D>, Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190405L;
-
+    public static final class SubOrientedPointBuilder implements SubHyperplane.Builder<Vector1D> {
         /** Base subhyperplane for the builder. */
         private final SubOrientedPoint base;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java
index 8b5a539..7d02293 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java
@@ -33,10 +33,6 @@
  * Euclidean space.
  */
 public final class RegionBSPTree1D extends AbstractRegionBSPTree<Vector1D, RegionBSPTree1D.RegionNode1D> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190405L;
-
     /** Comparator used to sort BoundaryPairs by ascending location.  */
     private static final Comparator<BoundaryPair> BOUNDARY_PAIR_COMPARATOR = (BoundaryPair a, BoundaryPair b) -> {
         return Double.compare(a.getMinValue(), b.getMinValue());
@@ -398,10 +394,6 @@
     /** BSP tree node for one dimensional Euclidean space.
      */
     public static final class RegionNode1D extends AbstractRegionBSPTree.AbstractRegionNode<Vector1D, RegionNode1D> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190405L;
-
         /** Simple constructor.
          * @param tree the owning tree instance
          */
@@ -471,10 +463,6 @@
     /** Class used to project points onto the region boundary.
      */
     private static final class BoundaryProjector1D extends BoundaryProjector<Vector1D, RegionNode1D> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190405L;
-
         /** Simple constructor.
          * @param point the point to project onto the region's boundary
          */
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Vector1D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Vector1D.java
index be0f7ab..9316b1d 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Vector1D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/Vector1D.java
@@ -65,9 +65,6 @@
         return cmp;
     };
 
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20180710L;
-
     /** Abscissa (coordinate value). */
     private final double x;
 
@@ -410,9 +407,6 @@
         /** Negation of unit vector (coordinates: -1). */
         public static final Unit MINUS = new Unit(-1d);
 
-        /** Serializable version identifier. */
-        private static final long serialVersionUID = 20180903L;
-
         /** Simple constructor. Callers are responsible for ensuring that the given
          * values represent a normalized vector.
          * @param x abscissa (first coordinate value)
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubLine3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubLine3D.java
index 1ab7654..35f8631 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubLine3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubLine3D.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Region;
 import org.apache.commons.geometry.core.precision.DoublePrecisionContext;
 import org.apache.commons.geometry.euclidean.oned.Vector1D;
@@ -25,11 +23,7 @@
 /** Internal base class for 3 dimensional subline implementations.
  * @param <R> 1D subspace region type
  */
-abstract class AbstractSubLine3D<R extends Region<Vector1D>> implements Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190812L;
-
+abstract class AbstractSubLine3D<R extends Region<Vector1D>> {
     /** The line that this instance belongs to. */
     private final Line3D line;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java
index a8ad65e..c1647f0 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractSubPlane.java
@@ -33,10 +33,6 @@
  */
 abstract class AbstractSubPlane<R extends HyperplaneBoundedRegion<Vector2D>>
     extends AbstractEmbeddingSubHyperplane<Vector3D, Vector2D, Plane> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190729L;
-
     /** The plane defining this instance. */
     private final Plane plane;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3D.java
index e88f2c3..a07fc2a 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3D.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.internal.DoubleFunction3N;
 import org.apache.commons.geometry.euclidean.AbstractAffineTransformMatrix;
 import org.apache.commons.geometry.euclidean.exception.NonInvertibleTransformException;
@@ -36,11 +34,7 @@
  * </p>
  */
 public final class AffineTransformMatrix3D extends AbstractAffineTransformMatrix<Vector3D>
-    implements Transform3D, Serializable {
-
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20180923L;
-
+    implements Transform3D {
     /** The number of internal matrix elements. */
     private static final int NUM_ELEMENTS = 12;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlane.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlane.java
index 085bf79..51e0cf7 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlane.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexSubPlane.java
@@ -35,10 +35,6 @@
  */
 public final class ConvexSubPlane extends AbstractSubPlane<ConvexArea>
     implements ConvexSubHyperplane<Vector3D>  {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190729L;
-
     /** The embedded 2D area. */
     private final ConvexArea area;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexVolume.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexVolume.java
index 985b476..269ba5a 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexVolume.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/ConvexVolume.java
@@ -31,10 +31,6 @@
  * The boundaries of this area, if any, are composed of convex subplanes.
  */
 public final class ConvexVolume extends AbstractConvexHyperplaneBoundedRegion<Vector3D, ConvexSubPlane> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190811L;
-
     /** Instance representing the full 3D volume. */
     private static final ConvexVolume FULL = new ConvexVolume(Collections.emptyList());
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Line3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Line3D.java
index 883b63e..d1d5b2f 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Line3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Line3D.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed;
 
-import java.io.Serializable;
 import java.util.Objects;
 
 import org.apache.commons.geometry.core.Embedding;
@@ -30,11 +29,7 @@
  *
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
-public final class Line3D implements Embedding<Vector3D, Vector1D>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190704L;
-
+public final class Line3D implements Embedding<Vector3D, Vector1D> {
     /** Line point closest to the origin. */
     private final Vector3D origin;
 
@@ -394,11 +389,7 @@
     /** Class containing a transformed line instance along with a subspace (1D) transform. The subspace
      * transform produces the equivalent of the 3D transform in 1D.
      */
-    public static final class SubspaceTransform implements Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190809L;
-
+    public static final class SubspaceTransform {
         /** The transformed line. */
         private final Line3D line;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Plane.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Plane.java
index 48597ae..14b423f 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Plane.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Plane.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed;
 
-import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
@@ -39,10 +38,6 @@
  */
 public final class Plane extends AbstractHyperplane<Vector3D>
     implements EmbeddingHyperplane<Vector3D, Vector2D>, Equivalency<Plane> {
-
-    /** Serializable version UID. */
-    private static final long serialVersionUID = 20190702L;
-
     /** First normalized vector of the plane frame (in plane). */
     private final Vector3D u;
 
@@ -751,11 +746,7 @@
     /** Class containing a transformed plane instance along with a subspace (2D) transform. The subspace
      * transform produces the equivalent of the 3D transform in 2D.
      */
-    public static final class SubspaceTransform implements Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190807L;
-
+    public static final class SubspaceTransform {
         /** The transformed plane. */
         private final Plane plane;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java
index c2f9ebd..451046a 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java
@@ -38,10 +38,6 @@
  * Euclidean space.
  */
 public final class RegionBSPTree3D extends AbstractRegionBSPTree<Vector3D, RegionBSPTree3D.RegionNode3D> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190702L;
-
     /** Create a new, empty region. */
     public RegionBSPTree3D() {
         this(false);
@@ -295,10 +291,6 @@
     /** BSP tree node for three dimensional Euclidean space.
      */
     public static final class RegionNode3D extends AbstractRegionBSPTree.AbstractRegionNode<Vector3D, RegionNode3D> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190702L;
-
         /** Simple constructor.
          * @param tree the owning tree instance
          */
@@ -578,10 +570,6 @@
     /** Class used to project points onto the 3D region boundary.
      */
     private static final class BoundaryProjector3D extends BoundaryProjector<Vector3D, RegionNode3D> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190811L;
-
         /** Simple constructor.
          * @param point the point to project onto the region's boundary
          */
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Segment3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Segment3D.java
index e330f1b..e94ceef 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Segment3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Segment3D.java
@@ -27,10 +27,6 @@
  * <p>This class is guaranteed to be immutable.</p>
  */
 public final class Segment3D extends AbstractSubLine3D<Interval> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190702L;
-
     /** String used to indicate the start point of the segment in the toString() representation. */
     private static final String START_STR = "start= ";
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinates.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinates.java
index 9759606..ca4eb46 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinates.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SphericalCoordinates.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Geometry;
 import org.apache.commons.geometry.core.Spatial;
 import org.apache.commons.geometry.core.internal.SimpleTupleFormat;
@@ -65,11 +63,7 @@
  *
  * @see <a href="https://en.wikipedia.org/wiki/Spherical_coordinate_system">Spherical Coordinate System</a>
  */
-public final class SphericalCoordinates implements Spatial, Serializable {
-
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20180623L;
-
+public final class SphericalCoordinates implements Spatial {
     /** Radius value. */
     private final double radius;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubLine3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubLine3D.java
index b847a96..740931e 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubLine3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubLine3D.java
@@ -30,10 +30,6 @@
  * <p>This class is mutable and <em>not</em> thread safe.</p>
  */
 public final class SubLine3D extends AbstractSubLine3D<RegionBSPTree1D> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190702L;
-
     /** The 1D region representing the area on the line. */
     private final RegionBSPTree1D region;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubPlane.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubPlane.java
index 4a22af0..562efed 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubPlane.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/SubPlane.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,11 +33,7 @@
  *
  * <p>This class is mutable and <em>not</em> thread safe.</p>
  */
-public final class SubPlane extends AbstractSubPlane<RegionBSPTree2D> implements Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190717L;
-
+public final class SubPlane extends AbstractSubPlane<RegionBSPTree2D> {
     /** The 2D region representing the area on the plane. */
     private final RegionBSPTree2D region;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Vector3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Vector3D.java
index 6678b04..3beeba2 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Vector3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Vector3D.java
@@ -71,9 +71,6 @@
         return cmp;
     };
 
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20180903L;
-
     /** Abscissa (first coordinate value). */
     private final double x;
 
@@ -616,9 +613,6 @@
         /** Negation of unit vector (coordinates: 0, 0, -1). */
         public static final Unit MINUS_Z = new Unit(0d, 0d, -1d);
 
-        /** Serializable version identifier. */
-        private static final long serialVersionUID = 20180903L;
-
         /** Simple constructor. Callers are responsible for ensuring that the given
          * values represent a normalized vector.
          * @param x abscissa (first coordinate value)
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequence.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequence.java
index a4c701b..f9f7680 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequence.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/AxisAngleSequence.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed.rotation;
 
-import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Objects;
 
@@ -61,11 +60,7 @@
  * @see <a href="https://en.wikipedia.org/wiki/Euler_angles">Euler Angles</a>
  * @see QuaternionRotation
  */
-public final class AxisAngleSequence implements Serializable {
-
-    /** Serializable identifier. */
-    private static final long serialVersionUID = 20181125L;
-
+public final class AxisAngleSequence {
     /** Reference frame for defining axis positions. */
     private final AxisReferenceFrame referenceFrame;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotation.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotation.java
index 0c6f423..3934f8b 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotation.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotation.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed.rotation;
 
-import java.io.Serializable;
 import java.util.Objects;
 
 import org.apache.commons.geometry.core.Geometry;
@@ -39,11 +38,7 @@
  *
  * @see Quaternion
  */
-public final class QuaternionRotation implements Rotation3D, Serializable {
-
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20181018L;
-
+public final class QuaternionRotation implements Rotation3D {
     /** Threshold value for the dot product of antiparallel vectors. If the dot product of two vectors is
      * less than this value, (adjusted for the lengths of the vectors), then the vectors are considered to be
      * antiparallel (ie, negations of each other).
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSegmentConnector.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSegmentConnector.java
index e7cbef2..aca9b94 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSegmentConnector.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSegmentConnector.java
@@ -28,10 +28,6 @@
  */
 public abstract class AbstractSegmentConnector
     extends AbstractPathConnector<AbstractSegmentConnector.ConnectableSegment> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190528L;
-
     /** Add a line segment to the connector, leaving it unconnected until a later call to
      * to {@link #connect(Iterable)} or {@link #connectAll()}.
      * @param segment line segment to add
@@ -138,10 +134,6 @@
     /** Internal class used to connect line segments together.
      */
     protected static class ConnectableSegment extends AbstractPathConnector.ConnectableElement<ConnectableSegment> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191107L;
-
         /** Segment start point. This will be used to connect to other path elements. */
         private final Vector2D start;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSubLine.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSubLine.java
index f039905..94ea6ad 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSubLine.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AbstractSubLine.java
@@ -31,10 +31,6 @@
 /** Internal base class for subline implementations.
  */
 abstract class AbstractSubLine extends AbstractEmbeddingSubHyperplane<Vector2D, Vector1D, Line> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190729L;
-
     /** The line defining this instance. */
     private final Line line;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2D.java
index e32bfe2..788e258 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2D.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.twod;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.internal.DoubleFunction2N;
 import org.apache.commons.geometry.euclidean.AbstractAffineTransformMatrix;
 import org.apache.commons.geometry.euclidean.exception.NonInvertibleTransformException;
@@ -35,11 +33,7 @@
 * </p>
 */
 public final class AffineTransformMatrix2D extends AbstractAffineTransformMatrix<Vector2D>
-    implements Transform2D, Serializable {
-
-    /** Serializable version identifier. */
-    private static final long serialVersionUID = 20181005L;
-
+    implements Transform2D {
     /** The number of internal matrix elements. */
     private static final int NUM_ELEMENTS = 6;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/ConvexArea.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/ConvexArea.java
index bdc34fa..e272193 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/ConvexArea.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/ConvexArea.java
@@ -33,10 +33,6 @@
  * The boundaries of this area, if any, are composed of line segments.
  */
 public final class ConvexArea extends AbstractConvexHyperplaneBoundedRegion<Vector2D, Segment> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190619L;
-
     /** Instance representing the full 2D plane. */
     private static final ConvexArea FULL = new ConvexArea(Collections.emptyList());
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/InteriorAngleSegmentConnector.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/InteriorAngleSegmentConnector.java
index 65eff62..b0ed43a 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/InteriorAngleSegmentConnector.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/InteriorAngleSegmentConnector.java
@@ -34,10 +34,6 @@
  * </p>
  */
 public abstract class InteriorAngleSegmentConnector extends AbstractSegmentConnector {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190530L;
-
     /** {@inheritDoc} */
     @Override
     protected ConnectableSegment selectConnection(ConnectableSegment incoming, List<ConnectableSegment> outgoing) {
@@ -94,10 +90,6 @@
      * line segment.
      */
     public static class Maximize extends InteriorAngleSegmentConnector {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190530L;
-
         /** {@inheritDoc} */
         @Override
         protected boolean isBetterAngle(double newAngle, double previousAngle) {
@@ -112,10 +104,6 @@
      * line segment.
      */
     public static class Minimize extends InteriorAngleSegmentConnector {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190530L;
-
         /** {@inheritDoc} */
         @Override
         protected boolean isBetterAngle(double newAngle, double previousAngle) {
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Line.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Line.java
index 16c370f..d21d692 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Line.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Line.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.twod;
 
-import java.io.Serializable;
 import java.util.Objects;
 
 import org.apache.commons.geometry.core.Transform;
@@ -60,10 +59,6 @@
  */
 public final class Line extends AbstractHyperplane<Vector2D>
     implements EmbeddingHyperplane<Vector2D, Vector1D>, Equivalency<Line> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190120L;
-
     /** The direction of the line as a normalized vector. */
     private final Vector2D direction;
 
@@ -558,11 +553,7 @@
     /** Class containing a transformed line instance along with a subspace (1D) transform. The subspace
      * transform produces the equivalent of the 2D transform in 1D.
      */
-    public static final class SubspaceTransform implements Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190809L;
-
+    public static final class SubspaceTransform {
         /** The transformed line. */
         private final Line line;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinates.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinates.java
index 5f679f9..45cf239 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinates.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/PolarCoordinates.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.twod;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Geometry;
 import org.apache.commons.geometry.core.Spatial;
 import org.apache.commons.geometry.core.internal.SimpleTupleFormat;
@@ -49,11 +47,7 @@
  *
  * @see <a href="https://en.wikipedia.org/wiki/Polar_coordinate_system">Polar Coordinate System</a>
  */
-public final class PolarCoordinates implements Spatial, Serializable {
-
-    /** Serializable version UID. */
-    private static final long serialVersionUID = 20180630L;
-
+public final class PolarCoordinates implements Spatial {
     /** Radius value. */
     private final double radius;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Polyline.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Polyline.java
index 15d5c3a..236ac2e 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Polyline.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Polyline.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.twod;
 
-import java.io.Serializable;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -37,11 +36,7 @@
  * <p>Instances of this class are guaranteed to be immutable.</p>
  * @see <a href="https://en.wikipedia.org/wiki/Polygonal_chain">Polygonal chain</a>
  */
-public class Polyline implements Iterable<Segment>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190522L;
-
+public class Polyline implements Iterable<Segment> {
     /** Polyline instance containing no segments. */
     private static final Polyline EMPTY = new Polyline(Collections.emptyList());
 
@@ -439,11 +434,7 @@
 
     /** Class used to build polylines.
      */
-    public static final class Builder implements Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190522L;
-
+    public static final class Builder {
         /** Line segments appended to the polyline. */
         private List<Segment> appendedSegments = null;
 
@@ -838,10 +829,6 @@
      * class simply returns the same instance.
      */
     private static final class SimplifiedPolyline extends Polyline {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190619;
-
         /** Create a new instance containing the given line segments. No validation is
          * performed on the inputs. Caller must ensure that the given segments represent
          * a valid, simplified path.
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java
index c577eb3..293a80a 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java
@@ -32,10 +32,6 @@
  * Euclidean space.
  */
 public final class RegionBSPTree2D extends AbstractRegionBSPTree<Vector2D, RegionBSPTree2D.RegionNode2D> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190519L;
-
     /** List of line segment paths comprising the region boundary. */
     private List<Polyline> boundaryPaths;
 
@@ -294,10 +290,6 @@
     /** BSP tree node for two dimensional Euclidean space.
      */
     public static final class RegionNode2D extends AbstractRegionBSPTree.AbstractRegionNode<Vector2D, RegionNode2D> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190519L;
-
         /** Simple constructor.
          * @param tree the owning tree instance
          */
@@ -484,10 +476,6 @@
     /** Class used to project points onto the 2D region boundary.
      */
     private static final class BoundaryProjector2D extends BoundaryProjector<Vector2D, RegionNode2D> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190811L;
-
         /** Simple constructor.
          * @param point the point to project onto the region's boundary
          */
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Segment.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Segment.java
index 2f959fc..b636206 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Segment.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Segment.java
@@ -37,10 +37,6 @@
  */
 public final class Segment extends AbstractSubLine
     implements ConvexSubHyperplane<Vector2D> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190729L;
-
     /** String used to indicate the start point of the segment in the toString() representation. */
     private static final String START_STR = "start= ";
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/SubLine.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/SubLine.java
index db234a4..ffc050a 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/SubLine.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/SubLine.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.twod;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -35,11 +34,7 @@
  *
  * <p>This class is mutable and <em>not</em> thread safe.</p>
  */
-public final class SubLine extends AbstractSubLine implements Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190717L;
-
+public final class SubLine extends AbstractSubLine {
     /** The 1D region representing the area on the line. */
     private final RegionBSPTree1D region;
 
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Vector2D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Vector2D.java
index 868148d..815587a 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Vector2D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Vector2D.java
@@ -68,9 +68,6 @@
         return cmp;
     };
 
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20180710L;
-
     /** Abscissa (first coordinate). */
     private final double x;
 
@@ -552,9 +549,6 @@
         /** Negation of unit vector (coordinates: 0, -1). */
         public static final Unit MINUS_Y = new Unit(0d, -1d);
 
-        /** Serializable version identifier. */
-        private static final long serialVersionUID = 20180903L;
-
         /** Simple constructor. Callers are responsible for ensuring that the given
          * values represent a normalized vector.
          * @param x abscissa (first coordinate value)
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/SubLineTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/SubLineTest.java
index f663ebe..71f371e 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/SubLineTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/SubLineTest.java
@@ -606,10 +606,6 @@
         Line line = Line.fromPointAndAngle(Vector2D.of(0, 1), Geometry.ZERO_PI, TEST_PRECISION);
 
         AbstractSubLine unknownType = new AbstractSubLine(line) {
-
-            /** Serializable UID */
-            private static final long serialVersionUID = 20190729L;
-
             @Override
             public boolean isInfinite() {
                 return false;
diff --git a/commons-geometry-hull/src/main/java/org/apache/commons/geometry/euclidean/twod/hull/ConvexHull2D.java b/commons-geometry-hull/src/main/java/org/apache/commons/geometry/euclidean/twod/hull/ConvexHull2D.java
index a0656db..663729f 100644
--- a/commons-geometry-hull/src/main/java/org/apache/commons/geometry/euclidean/twod/hull/ConvexHull2D.java
+++ b/commons-geometry-hull/src/main/java/org/apache/commons/geometry/euclidean/twod/hull/ConvexHull2D.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.twod.hull;
 
-import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -32,11 +31,7 @@
 /**
  * This class represents a convex hull in an two-dimensional Euclidean space.
  */
-public class ConvexHull2D implements ConvexHull<Vector2D>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20140129L;
-
+public class ConvexHull2D implements ConvexHull<Vector2D> {
     /** Vertices of the hull. */
     private final Vector2D[] vertices;
 
diff --git a/commons-geometry-hull/src/main/java/org/apache/commons/geometry/hull/ConvexHull.java b/commons-geometry-hull/src/main/java/org/apache/commons/geometry/hull/ConvexHull.java
index 0d4ed2a..1e0399e 100644
--- a/commons-geometry-hull/src/main/java/org/apache/commons/geometry/hull/ConvexHull.java
+++ b/commons-geometry-hull/src/main/java/org/apache/commons/geometry/hull/ConvexHull.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.hull;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Point;
 import org.apache.commons.geometry.core.Region;
 
@@ -26,7 +24,7 @@
  *
  * @param <P> Point type.
  */
-public interface ConvexHull<P extends Point<P>> extends Serializable {
+public interface ConvexHull<P extends Point<P>> {
 
     /**
      * Get the vertices of the convex hull.
@@ -40,5 +38,5 @@
      * @throws IllegalStateException if the number of vertices is not enough to
      * build a region in the respective space
      */
-    Region<P> createRegion() throws IllegalStateException;
+    Region<P> createRegion();
 }
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/AngularInterval.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/AngularInterval.java
index c77630b..81d9434 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/AngularInterval.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/AngularInterval.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.oned;
 
-import java.io.Serializable;
 import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.Collections;
@@ -39,11 +38,7 @@
  *
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
-public class AngularInterval implements HyperplaneBoundedRegion<Point1S>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190817L;
-
+public class AngularInterval implements HyperplaneBoundedRegion<Point1S> {
     /** The minimum boundary of the interval. */
     private final CutAngle minBoundary;
 
@@ -455,10 +450,6 @@
      * is either completely full or has a length less than or equal to {@code pi}.
      */
     public static final class Convex extends AngularInterval {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191012L;
-
         /** Interval instance representing the full space. */
         private static final Convex FULL = new Convex(null, null);
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/CutAngle.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/CutAngle.java
index 40b538e..4616355 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/CutAngle.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/CutAngle.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.oned;
 
-import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
@@ -59,11 +58,7 @@
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
 public final class CutAngle extends AbstractHyperplane<Point1S>
-    implements Equivalency<CutAngle>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190817L;
-
+    implements Equivalency<CutAngle> {
     /** Hyperplane location as a point. */
     private final Point1S point;
 
@@ -311,11 +306,7 @@
      * this is effectively a stub implementation, its main use being to allow for the correct functioning of
      * partitioning code.
      */
-    public static class SubCutAngle implements ConvexSubHyperplane<Point1S>, Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190825L;
-
+    public static class SubCutAngle implements ConvexSubHyperplane<Point1S> {
         /** The underlying hyperplane for this instance. */
         private final CutAngle hyperplane;
 
@@ -456,11 +447,7 @@
      * a stub implementation since there are no subspaces of 1D space. Its primary use is to allow
      * for the correct functioning of partitioning code.
      */
-    public static final class SubCutAngleBuilder implements SubHyperplane.Builder<Point1S>, Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190825L;
-
+    public static final class SubCutAngleBuilder implements SubHyperplane.Builder<Point1S> {
         /** Base subhyperplane for the builder. */
         private final SubCutAngle base;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java
index 4af43fa..630d6ef 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.oned;
 
-import java.io.Serializable;
 import java.util.Comparator;
 import java.util.Objects;
 
@@ -41,7 +40,7 @@
  *
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
-public final class Point1S implements Point<Point1S>, Serializable {
+public final class Point1S implements Point<Point1S> {
 
     /** A point with coordinates set to {@code 0*pi}. */
     public static final Point1S ZERO = Point1S.of(Geometry.ZERO_PI);
@@ -73,9 +72,6 @@
         return cmp;
     };
 
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20180710L;
-
     /** Azimuthal angle in radians. */
     private final double azimuth;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java
index 2c17465..15bd465 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java
@@ -35,10 +35,6 @@
 /** BSP tree representing regions in 1D spherical space.
  */
 public class RegionBSPTree1S extends AbstractRegionBSPTree<Point1S, RegionBSPTree1S.RegionNode1S> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190817L;
-
     /** Comparator used to sort BoundaryPairs by ascending azimuth.  */
     private static final Comparator<BoundaryPair> BOUNDARY_PAIR_COMPARATOR = (BoundaryPair a, BoundaryPair b) -> {
         return Double.compare(a.getMinValue(), b.getMinValue());
@@ -419,10 +415,6 @@
     /** BSP tree node for one dimensional spherical space.
      */
     public static final class RegionNode1S extends AbstractRegionBSPTree.AbstractRegionNode<Point1S, RegionNode1S> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190922L;
-
         /** Simple constructor.
          * @param tree the owning tree instance
          */
@@ -482,10 +474,6 @@
     /** Class used to project points onto the region boundary.
      */
     private static final class BoundaryProjector1S extends BoundaryProjector<Point1S, RegionNode1S> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20190926L;
-
         /** Simple constructor.
          * @param point the point to project onto the region's boundary
          */
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Transform1S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Transform1S.java
index dd9ac00..5d2449d 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Transform1S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Transform1S.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.oned;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Transform;
 
 /** Implementation of the {@link Transform} interface for spherical 1D points.
@@ -36,11 +34,7 @@
  *
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
-public final class Transform1S implements Transform<Point1S>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191001L;
-
+public final class Transform1S implements Transform<Point1S> {
     /** Static instance representing the identity transform. */
     private static final Transform1S IDENTITY = new Transform1S(1, 0);
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcConnector.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcConnector.java
index c6fd050..c8edd5d 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcConnector.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcConnector.java
@@ -28,10 +28,6 @@
  */
 public abstract class AbstractGreatArcConnector
     extends AbstractPathConnector<AbstractGreatArcConnector.ConnectableGreatArc> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191107L;
-
     /** Add an arc to the connector, leaving it unconnected until a later call to
      * to {@link #connect(Iterable)} or {@link #connectAll()}.
      * @param arc arc to add
@@ -136,10 +132,6 @@
     /** Internal class for connecting {@link GreatArc}s into {@link GreatArcPath}s.
      */
     protected static class ConnectableGreatArc extends AbstractPathConnector.ConnectableElement<ConnectableGreatArc> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191107L;
-
         /** Segment start point. This will be used to connect to other path elements. */
         private final Point2S start;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractSubGreatCircle.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractSubGreatCircle.java
index 05b02b4..1a314fd 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractSubGreatCircle.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/AbstractSubGreatCircle.java
@@ -25,10 +25,6 @@
  */
 abstract class AbstractSubGreatCircle
     extends AbstractEmbeddingSubHyperplane<Point2S, Point1S, GreatCircle> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191005L;
-
     /** The great circle defining this instance. */
     private final GreatCircle circle;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/ConvexArea2S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/ConvexArea2S.java
index 763244c..dde64aa 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/ConvexArea2S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/ConvexArea2S.java
@@ -36,10 +36,6 @@
  * area, if any, are composed of convex great circle arcs.
  */
 public final class ConvexArea2S extends AbstractConvexHyperplaneBoundedRegion<Point2S, GreatArc> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191021L;
-
     /** Instance representing the full spherical area. */
     private static final ConvexArea2S FULL = new ConvexArea2S(Collections.emptyList());
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArc.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArc.java
index faee91c..d2d17a9 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArc.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArc.java
@@ -40,10 +40,6 @@
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
 public final class GreatArc extends AbstractSubGreatCircle implements ConvexSubHyperplane<Point2S> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191005L;
-
     /** The interval representing the region of the great circle contained in the arc.
      */
     private final AngularInterval.Convex interval;
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArcPath.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArcPath.java
index 7178e6a..7d3e7d5 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArcPath.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatArcPath.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.twod;
 
-import java.io.Serializable;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -29,11 +28,7 @@
 
 /** Class representing a connected sequence of {@link GreatArc} instances.
  */
-public final class GreatArcPath implements Iterable<GreatArc>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191028L;
-
+public final class GreatArcPath implements Iterable<GreatArc> {
     /** Instance containing no arcs. */
     private static final GreatArcPath EMPTY = new GreatArcPath(Collections.emptyList());
 
@@ -296,11 +291,7 @@
 
     /** Class used to build arc paths.
      */
-    public static final class Builder implements Serializable {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191031L;
-
+    public static final class Builder {
         /** Arcs appended to the path. */
         private List<GreatArc> appendedArcs = null;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatCircle.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatCircle.java
index 47f4dbd..676943c 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatCircle.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/GreatCircle.java
@@ -40,10 +40,6 @@
  */
 public final class GreatCircle extends AbstractHyperplane<Point2S>
     implements EmbeddingHyperplane<Point2S, Point1S>, Equivalency<GreatCircle> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20190928L;
-
     /** Pole or circle center. */
     private final Vector3D.Unit pole;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/InteriorAngleGreatArcConnector.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/InteriorAngleGreatArcConnector.java
index 3d3dec0..446646a 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/InteriorAngleGreatArcConnector.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/InteriorAngleGreatArcConnector.java
@@ -34,10 +34,6 @@
  * </p>
  */
 public abstract class InteriorAngleGreatArcConnector extends AbstractGreatArcConnector {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191107L;
-
     /** {@inheritDoc} */
     @Override
     protected ConnectableGreatArc selectConnection(final ConnectableGreatArc incoming,
@@ -96,10 +92,6 @@
      * arc.
      */
     public static class Maximize extends InteriorAngleGreatArcConnector {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191107L;
-
         /** {@inheritDoc} */
         @Override
         protected boolean isBetterAngle(double newAngle, double previousAngle) {
@@ -114,10 +106,6 @@
      * arc.
      */
     public static class Minimize extends InteriorAngleGreatArcConnector {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191107L;
-
         /** {@inheritDoc} */
         @Override
         protected boolean isBetterAngle(double newAngle, double previousAngle) {
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Point2S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Point2S.java
index e741e5d..25f1aea 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Point2S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Point2S.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.twod;
 
-import java.io.Serializable;
 import java.util.Comparator;
 
 import org.apache.commons.geometry.core.Geometry;
@@ -30,7 +29,7 @@
 /** This class represents a point on the 2-sphere.
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
-public final class Point2S implements Point<Point2S>, Serializable {
+public final class Point2S implements Point<Point2S> {
 
     /** +I (coordinates: ( azimuth = 0, polar = pi/2 )). */
     public static final Point2S PLUS_I = new Point2S(0, 0.5 * Math.PI, Vector3D.Unit.PLUS_X);
@@ -77,10 +76,6 @@
 
         return cmp;
     };
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20180710L;
-
     /** Azimuthal angle in the x-y plane. */
     private final double azimuth;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java
index a9640e1..baea410 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java
@@ -31,10 +31,6 @@
 /** BSP tree representing regions in 2D spherical space.
  */
 public class RegionBSPTree2S extends AbstractRegionBSPTree<Point2S, RegionBSPTree2S.RegionNode2S> {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191005L;
-
     /** Constant containing the area of the full spherical space. */
     private static final double FULL_SIZE = 4 * Geometry.PI;
 
@@ -251,10 +247,6 @@
     /** BSP tree node for two dimensional spherical space.
      */
     public static final class RegionNode2S extends AbstractRegionBSPTree.AbstractRegionNode<Point2S, RegionNode2S> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191005L;
-
         /** Simple constructor.
          * @param tree tree owning the instance.
          */
@@ -281,10 +273,6 @@
     /** Class used to project points onto the region boundary.
      */
     private static final class BoundaryProjector2S extends BoundaryProjector<Point2S, RegionNode2S> {
-
-        /** Serializable UID. */
-        private static final long serialVersionUID = 20191120L;
-
         /** Simple constructor.
          * @param point the point to project onto the region's boundary
          */
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/SubGreatCircle.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/SubGreatCircle.java
index 2b873b4..ca0163d 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/SubGreatCircle.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/SubGreatCircle.java
@@ -32,10 +32,6 @@
 /** Class representing an arbitrary region of a great circle.
  */
 public final class SubGreatCircle extends AbstractSubGreatCircle {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 20191005L;
-
     /** The 1D region on the great circle. */
     private final RegionBSPTree1S region;
 
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Transform2S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Transform2S.java
index e6abe83..bb50fd0 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Transform2S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/Transform2S.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.twod;
 
-import java.io.Serializable;
-
 import org.apache.commons.geometry.core.Transform;
 import org.apache.commons.geometry.euclidean.threed.AffineTransformMatrix3D;
 import org.apache.commons.geometry.euclidean.threed.Vector3D;
@@ -30,11 +28,7 @@
  *
  * <p>Instances of this class are guaranteed to be immutable.</p>
  */
-public final class Transform2S implements Transform<Point2S>, Serializable {
-
-    /** Serializable UID. */
-    private static final long serialVersionUID = 1L;
-
+public final class Transform2S implements Transform<Point2S> {
     /** Static instance representing the identity transform. */
     private static final Transform2S IDENTITY = new Transform2S(AffineTransformMatrix3D.identity());
 
