diff --git a/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml b/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml
index 749c0c9..21da6fc 100644
--- a/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml
+++ b/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml
@@ -27,11 +27,11 @@
   <define-configuration-property name="UiBinder.useSafeHtmlTemplates" is-multi-valued="false"/>
   <set-configuration-property name="UiBinder.useSafeHtmlTemplates" value="true"/>
 
-  <!-- UiBinder can be configured to use a new strategy that enables a faster
-       rendering mode and make some widgets lazily created. This is still experimental
-       but should be the default option in a soon future. -->
+  <!-- Set this property to false to revert to the old code gen strategy, 
+    and lose features like support for LazyPanel and forward references. This 
+    property will soon disappear. -->
   <define-configuration-property name="UiBinder.useLazyWidgetBuilders" is-multi-valued="false"/>
-  <set-configuration-property name="UiBinder.useLazyWidgetBuilders" value="false"/>
+  <set-configuration-property name="UiBinder.useLazyWidgetBuilders" value="true"/>
 
   <generate-with class="com.google.gwt.uibinder.rebind.UiBinderGenerator">
     <when-type-assignable class="com.google.gwt.uibinder.client.UiRenderer"/>
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java
index 448cc52..7bda11f 100644
--- a/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java
+++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java
@@ -52,6 +52,7 @@
   private static final String LAZY_WIDGET_BUILDERS_PROPERTY = "UiBinder.useLazyWidgetBuilders";
   
   private static boolean gaveSafeHtmlWarning;
+  private static boolean gaveLazyBuildersWarning;
 
   /**
    * Given a UiBinder interface, return the path to its ui.xml file, suitable
@@ -212,7 +213,14 @@
   }
 
   private Boolean useLazyWidgetBuilders(MortalLogger logger, PropertyOracle propertyOracle) {
-    return extractConfigProperty(logger, propertyOracle, LAZY_WIDGET_BUILDERS_PROPERTY, false);
+    Boolean rtn = extractConfigProperty(logger, propertyOracle, LAZY_WIDGET_BUILDERS_PROPERTY, false);
+    if (!gaveLazyBuildersWarning && !rtn) {
+      logger.warn("Configuration property %s is false. Deprecated code generation is in play. " +
+                  "This property will soon become a no-op.",
+                  LAZY_WIDGET_BUILDERS_PROPERTY);
+      gaveLazyBuildersWarning = true;
+    }
+    return rtn;
   }
 
   private Boolean useSafeHtmlTemplates(MortalLogger logger, PropertyOracle propertyOracle) {
@@ -221,7 +229,8 @@
 
     if (!gaveSafeHtmlWarning && !rtn) {
       logger.warn("Configuration property %s is false! UiBinder SafeHtml integration is off, "
-          + "leaving your users more vulnerable to cross-site scripting attacks.",
+          + "leaving your users more vulnerable to cross-site scripting attacks. This property " +
+          "will soon become a no-op, and SafeHtml integration will always be on.",
           XSS_SAFE_CONFIG_PROPERTY);
       gaveSafeHtmlWarning = true;
     }
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
index 9aba760..63241fa 100644
--- a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
+++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
@@ -1006,7 +1006,7 @@
    */
   public String tokenForSafeUriExpression(XMLElement source, String expression) {
     if (!useSafeHtmlTemplates) {
-      return tokenForStringExpression(source, expression + ".asString()");
+      return tokenForStringExpression(source, expression);
     }
 
     htmlTemplates.noteUri(expression);
