diff --git a/user/src/com/google/gwt/uibinder/parsers/HorizontalAlignmentConstantParser.java b/user/src/com/google/gwt/uibinder/parsers/HorizontalAlignmentConstantParser.java
index b70b717..85d05fd 100644
--- a/user/src/com/google/gwt/uibinder/parsers/HorizontalAlignmentConstantParser.java
+++ b/user/src/com/google/gwt/uibinder/parsers/HorizontalAlignmentConstantParser.java
@@ -24,7 +24,7 @@
  * Parses a
  * {@link com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant}.
  */
-public class HorizontalAlignmentConstantParser implements AttributeParser {
+public class HorizontalAlignmentConstantParser extends StrictAttributeParser {
 
   private static final HashMap<String, String> values =
     new HashMap<String, String>();
@@ -41,9 +41,9 @@
   public String parse(String value, MortalLogger logger)
       throws UnableToCompleteException {
     String translated = values.get(value);
-    if (translated == null) {
-      logger.die("Invalid value: horizontalAlignment='" + value + "'");
+    if (translated != null) {
+      return translated;
     }
-    return translated;
+    return super.parse(value, logger);
   }
 }
diff --git a/user/src/com/google/gwt/uibinder/parsers/StrictAttributeParser.java b/user/src/com/google/gwt/uibinder/parsers/StrictAttributeParser.java
index 18acbc7..2dd6a14 100644
--- a/user/src/com/google/gwt/uibinder/parsers/StrictAttributeParser.java
+++ b/user/src/com/google/gwt/uibinder/parsers/StrictAttributeParser.java
@@ -66,7 +66,7 @@
     try {
       return new FieldReferenceConverter(new FieldReferenceDelegate()).convert(value);
     } catch (IllegalFieldReferenceException e) {
-      logger.die("Bad field reference: \"%s\"", value);
+      logger.die("Cannot parse value: \"%s\"", value);
       return null; // Unreachable
     }
   }
diff --git a/user/src/com/google/gwt/uibinder/parsers/VerticalAlignmentConstantParser.java b/user/src/com/google/gwt/uibinder/parsers/VerticalAlignmentConstantParser.java
index 6a7fcad..f1d0a69 100644
--- a/user/src/com/google/gwt/uibinder/parsers/VerticalAlignmentConstantParser.java
+++ b/user/src/com/google/gwt/uibinder/parsers/VerticalAlignmentConstantParser.java
@@ -24,7 +24,7 @@
  * Parses a
  * {@link com.google.gwt.user.client.ui.HasVerticalAlignment.VerticalAlignmentConstant}.
  */
-public class VerticalAlignmentConstantParser implements AttributeParser {
+public class VerticalAlignmentConstantParser extends StrictAttributeParser {
 
   private static final HashMap<String, String> values =
     new HashMap<String, String>();
@@ -41,9 +41,9 @@
   public String parse(String value, MortalLogger logger)
       throws UnableToCompleteException {
     String translated = values.get(value);
-    if (translated == null) {
-      logger.die("Invalid value: vorizontalAlignment='%s'", value);
+    if (translated != null) {
+      return translated;
     }
-    return translated;
+    return super.parse(value, logger);
   }
 }
diff --git a/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml b/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml
index f3f2f48..e1c8d1a 100644
--- a/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml
+++ b/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml
@@ -278,7 +278,7 @@
         <ui:attribute name="text" description="radio button name"/>
       </demo:PointlessRadioButtonSubclass>
       
-	<gwt:HorizontalPanel>
+	<gwt:HorizontalPanel horizontalAlignment="ALIGN_LEFT">
 	  <gwt:Cell><gwt:HTMLPanel>
       <p> ... a StackPanel ... </p>
       
