diff --git a/Changelog b/Changelog
index d21ec05def47d8d2a34cce02a6b45590462d117c..19ac46a4b3454f3d0e8123c39116af56b18337a7 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,10 @@
+Travel::Routing::DE::VRR 2.24 - Thu Nov 23 2023
+
+    * efa: Make output less horizontally dense; show arrival and departure
+      delays in-line
+    * EFA::Route::Part: Add arrival_delay and departure_delay accessors
+    * EFA::Route::Part: via: Add delay field to returned list refs
+
 Travel::Routing::DE::VRR 2.23 - Mon Oct 02 2023
 
     * Update default API endpoint as the previously used efa.vrr.de/vrr seems
diff --git a/bin/efa b/bin/efa
index 7c39ceddc046cefc5a913d6a39b4b076e6353073..6768902050d39a6c18436d693509de60773b6678 100755
--- a/bin/efa
+++ b/bin/efa
@@ -12,7 +12,7 @@ use Exception::Class;
 use Getopt::Long qw/:config no_ignore_case/;
 use List::Util   qw(first max);
 
-our $VERSION = '2.23';
+our $VERSION = '2.24';
 my $ignore_info;
 my $efa;
 my $efa_url = 'https://app.vrr.de/vrrstd/XML_TRIP_REQUEST2';
@@ -523,7 +523,7 @@ efa - Command line client for EFA-based public transit routing services
 
 =head1 VERSION
 
-version 2.23
+version 2.24
 
 =head1 DESCRIPTION
 
diff --git a/lib/Travel/Routing/DE/EFA.pm b/lib/Travel/Routing/DE/EFA.pm
index edfc918bfe459242bb3aa98c933db4c1d9c2be28..80bfb683cb42922a163fe47db2a539846b87262f 100644
--- a/lib/Travel/Routing/DE/EFA.pm
+++ b/lib/Travel/Routing/DE/EFA.pm
@@ -40,7 +40,7 @@ use Exception::Class (
 	},
 );
 
-our $VERSION = '2.23';
+our $VERSION = '2.24';
 
 sub set_time {
 	my ( $self, %conf ) = @_;
@@ -981,7 +981,7 @@ Travel::Routing::DE::EFA - unofficial interface to EFA-based itinerary services
 
 =head1 VERSION
 
-version 2.23
+version 2.24
 
 =head1 DESCRIPTION
 
diff --git a/lib/Travel/Routing/DE/EFA/Route.pm b/lib/Travel/Routing/DE/EFA/Route.pm
index b1a81060d1ffaa0bf6f91dd03d9bab368f900611..87d4e4bdb16190b7f38f55e1e36d829ae56b7ecd 100644
--- a/lib/Travel/Routing/DE/EFA/Route.pm
+++ b/lib/Travel/Routing/DE/EFA/Route.pm
@@ -8,7 +8,7 @@ use parent 'Class::Accessor';
 
 use Travel::Routing::DE::EFA::Route::Part;
 
-our $VERSION = '2.23';
+our $VERSION = '2.24';
 
 Travel::Routing::DE::EFA::Route->mk_ro_accessors(
 	qw(duration ticket_text ticket_type fare_adult fare_child vehicle_time));
@@ -52,7 +52,7 @@ Travel::Routing::DE::EFA::Route - Single route (connection) between two points
 
 =head1 VERSION
 
-version 2.23
+version 2.24
 
 =head1 DESCRIPTION
 
diff --git a/lib/Travel/Routing/DE/EFA/Route/Message.pm b/lib/Travel/Routing/DE/EFA/Route/Message.pm
index f67de81b1abd6b422a2542c601ea84ca2f847a8d..6ae2e19aa29959e5c1e8be4b37bbb0adcf11b6e9 100644
--- a/lib/Travel/Routing/DE/EFA/Route/Message.pm
+++ b/lib/Travel/Routing/DE/EFA/Route/Message.pm
@@ -6,7 +6,7 @@ use 5.010;
 
 use parent 'Class::Accessor';
 
-our $VERSION = '2.23';
+our $VERSION = '2.24';
 
 Travel::Routing::DE::EFA::Route::Message->mk_ro_accessors(
 	qw(is_detailed summary subject subtitle raw_content));
@@ -58,7 +58,7 @@ route or route part.
 
 =head1 VERSION
 
-version 2.23
+version 2.24
 
 =head1 DESCRIPTION
 
diff --git a/lib/Travel/Routing/DE/EFA/Route/Part.pm b/lib/Travel/Routing/DE/EFA/Route/Part.pm
index 773287e61f1fdca7c422a8c211f0669eeaac375a..7ed27227e9ff95b6cd279cad9e2675f10f361292 100644
--- a/lib/Travel/Routing/DE/EFA/Route/Part.pm
+++ b/lib/Travel/Routing/DE/EFA/Route/Part.pm
@@ -6,7 +6,7 @@ use 5.010;
 
 use parent 'Class::Accessor';
 
-our $VERSION = '2.23';
+our $VERSION = '2.24';
 
 my %occupancy = (
 	MANY_SEATS    => 1,
@@ -171,7 +171,7 @@ points, without interchanges
 
 =head1 VERSION
 
-version 2.23
+version 2.24
 
 =head1 DESCRIPTION
 
diff --git a/lib/Travel/Routing/DE/VRR.pm b/lib/Travel/Routing/DE/VRR.pm
index 9d5c78ef9a8801624e4022df82897bd0247594d4..9e485d6f376c3cfc365df70efb7ca7273d8c3caf 100644
--- a/lib/Travel/Routing/DE/VRR.pm
+++ b/lib/Travel/Routing/DE/VRR.pm
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 use 5.010;
 
-our $VERSION = '2.23';
+our $VERSION = '2.24';
 
 use parent 'Travel::Routing::DE::EFA';
 
@@ -47,7 +47,7 @@ Travel::Routing::DE::VRR - unofficial interface to the efa.vrr.de German itinera
 
 =head1 VERSION
 
-version 2.23
+version 2.24
 
 =head1 DESCRIPTION