diff --git a/bin/efa b/bin/efa
index 5045de788f677b6db6f80738673e03d60ed5393a..177c170a823a7b40877b1902f87d68673a677e1c 100755
--- a/bin/efa
+++ b/bin/efa
@@ -49,13 +49,13 @@ sub handle_efa_exception {
 	if ( $e->isa('Travel::Routing::DE::EFA::Exception::Setup') ) {
 		if ( $e->message ) {
 			printf STDERR (
-				"Error: %s (option '%s'): %s\n",
+				"User error: %s (option '%s'): %s\n",
 				$e->description, $e->option, $e->message
 			);
 		}
 		else {
 			printf STDERR (
-				"Error: %s (option '%s', got '%s', want '%s')\n",
+				"User error: %s (option '%s', got '%s', want '%s')\n",
 				$e->description, $e->option, $e->have, $e->want
 			);
 		}
@@ -63,27 +63,30 @@ sub handle_efa_exception {
 		exit 1;
 	}
 	if ( $e->isa('Travel::Routing::DE::EFA::Exception::Net') ) {
-		printf STDERR ( "Error: %s: %s\n", $e->description,
-			$e->http_response->as_string );
+		printf STDERR (
+			"Network error: %s: %s\n",
+			$e->description, $e->http_response->as_string
+		);
 		exit 2;
 	}
 	if ( $e->isa('Travel::Routing::DE::EFA::Exception::NoData') ) {
-		printf STDERR ( "Error: %s\n", $e->description );
+		printf STDERR ( "Backend rror: %s\n", $e->description );
 		exit 3;
 	}
 	if ( $e->isa('Travel::Routing::DE::EFA::Exception::Ambiguous') ) {
 		printf STDERR (
-			"Error: %s for key %s. Specify one of %s\n",
-			$e->description, $e->post_key, $e->possibilities
+			"Backend error: The %s '%s' is ambiguous. Try one of %s\n",
+			$e->post_key, $e->post_value,, $e->possibilities
 		);
 		exit 4;
 	}
 	if ( $e->isa('Travel::Routing::DE::EFA::Exception::Other') ) {
-		printf STDERR ( "Error: %s: %s\n", $e->description, $e->message );
+		printf STDERR ( "Backend error: %s: %s\n", $e->description,
+			$e->message );
 		exit 5;
 	}
 
-	printf STDERR ( "Uncaught exception: %s\n%s", ref($e), $e->trace );
+	printf STDERR ( "Unknown error: %s\n%s", ref($e), $e->trace );
 	exit 10;
 }
 
@@ -235,7 +238,7 @@ if ( $opt->{exclude} ) {
 }
 
 if ( $opt->{service} ) {
-	my $service = first { lc($_->{shortname}) eq lc($opt->{service}) }
+	my $service = first { lc( $_->{shortname} ) eq lc( $opt->{service} ) }
 	Travel::Routing::DE::EFA::get_efa_urls();
 	if ( not $service ) {
 		printf STDERR (
diff --git a/lib/Travel/Routing/DE/EFA.pm b/lib/Travel/Routing/DE/EFA.pm
index 53d5d229a06634df64338e89cc3311347d601530..357e35ba8bc4607f4890eb1c53266c84ac73c4f9 100644
--- a/lib/Travel/Routing/DE/EFA.pm
+++ b/lib/Travel/Routing/DE/EFA.pm
@@ -31,7 +31,7 @@ use Exception::Class (
 	'Travel::Routing::DE::EFA::Exception::Ambiguous' => {
 		isa         => 'Travel::Routing::DE::EFA::Exception',
 		description => 'ambiguous input',
-		fields      => [ 'post_key', 'possibilities' ],
+		fields      => [ 'post_key', 'post_value', 'possibilities' ],
 	},
 	'Travel::Routing::DE::EFA::Exception::Other' => {
 		isa         => 'Travel::Routing::DE::EFA::Exception',
@@ -687,8 +687,10 @@ sub check_ambiguous_xml {
 	my $xp_place = XML::LibXML::XPathExpression->new('./itdOdvPlace');
 	my $xp_name  = XML::LibXML::XPathExpression->new('./itdOdvName');
 
-	my $xp_place_elem = XML::LibXML::XPathExpression->new('./odvPlaceElem');
-	my $xp_name_elem  = XML::LibXML::XPathExpression->new('./odvNameElem');
+	my $xp_place_elem  = XML::LibXML::XPathExpression->new('./odvPlaceElem');
+	my $xp_place_input = XML::LibXML::XPathExpression->new('./odvPlaceInput');
+	my $xp_name_elem   = XML::LibXML::XPathExpression->new('./odvNameElem');
+	my $xp_name_input  = XML::LibXML::XPathExpression->new('./odvNameInput');
 
 	my $e_place = ( $tree->findnodes($xp_place) )[0];
 	my $e_name  = ( $tree->findnodes($xp_name) )[0];
@@ -703,7 +705,11 @@ sub check_ambiguous_xml {
 
 	if ( $s_place eq 'list' ) {
 		Travel::Routing::DE::EFA::Exception::Ambiguous->throw(
-			post_key      => 'place',
+			post_key   => 'place',
+			post_value => decode(
+				'UTF-8',
+				( $e_place->findnodes($xp_place_input) )[0]->textContent
+			),
 			possibilities => join( q{ | },
 				map { decode( 'UTF-8', $_->textContent ) }
 				  @{ $e_place->findnodes($xp_place_elem) } )
@@ -711,7 +717,10 @@ sub check_ambiguous_xml {
 	}
 	if ( $s_name eq 'list' ) {
 		Travel::Routing::DE::EFA::Exception::Ambiguous->throw(
-			post_key      => 'name',
+			post_key   => 'name',
+			post_value => decode(
+				'UTF-8', ( $e_name->findnodes($xp_name_input) )[0]->textContent
+			),
 			possibilities => join( q{ | },
 				map { decode( 'UTF-8', $_->textContent ) }
 				  @{ $e_name->findnodes($xp_name_elem) } )