diff --git a/lib/WWW/Efa/Error/Setup.pm b/lib/WWW/Efa/Error/Setup.pm
index f35dcee4a303ee12a7857f619523cd2b489c700a..386613b7149e9da68cb64ba193a3a96423ae63e4 100644
--- a/lib/WWW/Efa/Error/Setup.pm
+++ b/lib/WWW/Efa/Error/Setup.pm
@@ -60,4 +60,22 @@ sub as_string {
 	);
 }
 
+=head2 $error->option()
+
+Returns the option which caused the error.
+
+=head2 $error->value()
+
+Returns the value which caused the error.
+
+=head2 $error->message()
+
+Returns a message describing what went wrong and how to fix it.
+
+=cut
+
+sub option  { return $_[0]->{'key'}     }
+sub value   { return $_[0]->{'value'}   }
+sub message { return $_[0]->{'message'} }
+
 1;
diff --git a/t/50-www-efa.t b/t/50-www-efa.t
index e5272727b3f07403b7ea17a3551b30acecd3ed3e..bae1e94f2f78a33df560512d59c2ef2bd0b61b86 100644
--- a/t/50-www-efa.t
+++ b/t/50-www-efa.t
@@ -80,15 +80,15 @@ sub is_efa_err {
 	isa_ok($efa->{'error'}, 'WWW::Efa::Error::Setup');
 
 	is(
-		$efa->{'error'}->{'key'}, $key,
+		$efa->{'error'}->option(), $key,
 		"$key => $val: Error: Correct key",
 	);
 	is(
-		$efa->{'error'}->{'value'}, $val_want,
+		$efa->{'error'}->value(), $val_want,
 		"$key => $val: Error: Correct valuef",
 	);
 	is(
-		$efa->{'error'}->{'message'}, $str,
+		$efa->{'error'}->message(), $str,
 		"$key => $val: Error: String is '$str'",
 	);
 }