diff --git a/Changes b/Changes
index b67d33e..2b74f5b 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,9 @@
-0.55 2024-06-11
+0.55 2024-06-12
+        - Removed deprecated doc_link_to helper. (diewald)
+        - Removed deprecated doc_ext_link_to helper. (diewald)
+        - Removed deprecated doc_uc helper. (diewald)
+        - Removed deprecated doc_navi helper. (diewald)
+        - Removed deprecated doc->url helper. (diewald)
         - Correctly propagate warnings in frontend calls. (diewald)
 
 0.54 2024-06-10
diff --git a/lib/Kalamar/Plugin/KalamarPages.pm b/lib/Kalamar/Plugin/KalamarPages.pm
index 5e6a19f..244973f 100644
--- a/lib/Kalamar/Plugin/KalamarPages.pm
+++ b/lib/Kalamar/Plugin/KalamarPages.pm
@@ -54,15 +54,6 @@
     }
   );
 
-  # DEPRECATED: 2019-10-17
-  $mojo->helper(
-    doc_link_to => sub {
-      my $c = shift;
-      deprecated 'Deprecated "doc_link_to" in favor of "embedded_link_to"';
-      return $c->embedded_link_to('doc', @_)
-    }
-  );
-
   # Link to an external page
   $mojo->helper(
     ext_link_to => sub {
@@ -71,15 +62,6 @@
     }
   );
 
-  # DEPRECATED: 2019-10-17
-  $mojo->helper(
-    doc_ext_link_to => sub {
-      my $c = shift;
-      deprecated 'Deprecated "doc_ext_link_to" in favor of "ext_link_to"';
-      return $c->ext_link_to(@_);
-    }
-  );
-
   # Page alert - Under Construction!
   $mojo->helper(
     under_construction => sub {
@@ -88,16 +70,6 @@
     }
   );
 
-  # Page alert - Under Construction!
-  # DEPRECATED: 2019-10-17
-  $mojo->helper(
-    doc_uc => sub {
-      my $c = shift;
-      deprecated 'Deprecated "doc_uc" in favor of "under_construction"';
-      return $c->under_construction
-    }
-  );
-
   # Page title helper
   $mojo->helper(
     page_title => sub {
@@ -124,32 +96,6 @@
     }
   );
 
-
-  # DEPRECATED: 2019-10-24
-  $mojo->helper(
-    'doc.url' => sub {
-      deprecated 'Deprecated "doc->url" in favor of direct usage with "url_with"';
-      my $c = shift;
-      my $page = pop;
-      my $scope = shift;
-      return $c->url_with(
-        'doc',
-        page => $page,
-        scope => $scope
-      );
-    }
-  );
-
-  # Documentation navigation helper
-  # DEPRECATED: 2019-10-24
-  $mojo->helper(
-    doc_navi => sub {
-      deprecated 'Deprecated "docnavi" in favor of "navigation"';
-      my $c = shift;
-      return $c->navigation('doc', @_)
-    }
-  );
-
   # Navigation helper
   $mojo->helper(
     'navigation' => sub {
@@ -363,10 +309,10 @@
 Creates a link to an external page, that will be opened in the top frame,
 in case it's in an embedded frame.
 
-=head2 doc_uc
+=head2 doc_under_construction
 
   %# In templates
-  %= doc_uc
+  %= doc_under_construction
 
 Generates an C<Under Construction> notification.
 
