diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/repository/PrioritySortingComparitor.java b/scim-server/src/main/java/org/apache/directory/scim/server/repository/PrioritySortingComparator.java
similarity index 92%
rename from scim-server/src/main/java/org/apache/directory/scim/server/repository/PrioritySortingComparitor.java
rename to scim-server/src/main/java/org/apache/directory/scim/server/repository/PrioritySortingComparator.java
index 0b46c46..222ec15 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/repository/PrioritySortingComparitor.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/repository/PrioritySortingComparator.java
@@ -24,11 +24,11 @@
 
 import org.apache.directory.scim.spec.resources.TypedAttribute;
 
-public class PrioritySortingComparitor implements Comparator<Object> {
+class PrioritySortingComparator implements Comparator<Object> {
 
   private Set<Object> priorities;
 
-  public PrioritySortingComparitor(Set<Object> priorities) {
+  public PrioritySortingComparator(Set<Object> priorities) {
     this.priorities = priorities;
   }
 
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/repository/UpdateRequest.java b/scim-server/src/main/java/org/apache/directory/scim/server/repository/UpdateRequest.java
index ee066c8..d5b0f17 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/repository/UpdateRequest.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/repository/UpdateRequest.java
@@ -156,13 +156,13 @@
         List<Object> collection2 = obj2 != null ? (List<Object>) accessor.get(obj2) : null;
         
         Set<Object> priorities = findCommonElements(collection1, collection2);
-        PrioritySortingComparitor prioritySortingComparitor = new PrioritySortingComparitor(priorities);
+        PrioritySortingComparator prioritySortingComparator = new PrioritySortingComparator(priorities);
         if (collection1 != null) {
-          Collections.sort(collection1, prioritySortingComparitor);
+          Collections.sort(collection1, prioritySortingComparator);
         }
         
         if (collection2 != null) {
-          Collections.sort(collection2, prioritySortingComparitor);
+          Collections.sort(collection2, prioritySortingComparator);
         }
       } else if (attribute.getType() == Attribute.Type.COMPLEX) {
         Object nextObj1 = obj1 != null ? accessor.get(obj1) : null;
@@ -180,8 +180,8 @@
     Set<Object> set1 = new HashSet<>(list1);
     Set<Object> set2 = new HashSet<>(list2);
     
-    set1 = set1.stream().map(PrioritySortingComparitor::getComparableValue).collect(Collectors.toSet());
-    set2 = set2.stream().map(PrioritySortingComparitor::getComparableValue).collect(Collectors.toSet());
+    set1 = set1.stream().map(PrioritySortingComparator::getComparableValue).collect(Collectors.toSet());
+    set2 = set2.stream().map(PrioritySortingComparator::getComparableValue).collect(Collectors.toSet());
     
     set1.retainAll(set2);
     return set1;
diff --git a/scim-server/src/test/java/org/apache/directory/scim/server/repository/PrioritySortingComparitorTest.java b/scim-server/src/test/java/org/apache/directory/scim/server/repository/PrioritySortingComparatorTest.java
similarity index 89%
rename from scim-server/src/test/java/org/apache/directory/scim/server/repository/PrioritySortingComparitorTest.java
rename to scim-server/src/test/java/org/apache/directory/scim/server/repository/PrioritySortingComparatorTest.java
index 647e9eb..4b32c97 100644
--- a/scim-server/src/test/java/org/apache/directory/scim/server/repository/PrioritySortingComparitorTest.java
+++ b/scim-server/src/test/java/org/apache/directory/scim/server/repository/PrioritySortingComparatorTest.java
@@ -28,14 +28,14 @@
 import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-public class PrioritySortingComparitorTest {
+public class PrioritySortingComparatorTest {
 
   @Test
   public void testSorting() throws Exception {
     Set<Object> priorities = new HashSet<>();
     priorities.add("1P");
     priorities.add("2P");
-    PrioritySortingComparitor comparitor = new PrioritySortingComparitor(priorities);
+    PrioritySortingComparator comparitor = new PrioritySortingComparator(priorities);
     List<String> list = Arrays.asList("1", "2", "1P", "2P", "3", "4");
     Collections.sort(list, comparitor);
     System.out.println(list);
@@ -48,7 +48,7 @@
     Set<Object> priorities = new HashSet<>();
     priorities.add("home");
     priorities.add("work");
-    PrioritySortingComparitor comparitor = new PrioritySortingComparitor(priorities);
+    PrioritySortingComparator comparitor = new PrioritySortingComparator(priorities);
     List<String> list = Arrays.asList("work", "local", "home");
     Collections.sort(list, comparitor);
     System.out.println(list);
