diff --git a/build.properties b/build.properties
index d53d869..f1cfe8b 100644
--- a/build.properties
+++ b/build.properties
@@ -4,4 +4,5 @@
 test.dir=test
 build.dir=build
 javadoc.packagenames=com.google.inject,com.google.inject.spi,\
-  com.google.inject.matcher,com.google.inject.servlet,com.google.inject.name
+  com.google.inject.matcher,com.google.inject.servlet,com.google.inject.name,\
+  com.google.inject.tools.jmx
diff --git a/src/com/google/inject/Binder.java b/src/com/google/inject/Binder.java
index c87a360..0a9bf60 100644
--- a/src/com/google/inject/Binder.java
+++ b/src/com/google/inject/Binder.java
@@ -24,7 +24,14 @@
 /**
  * Annotates annotations which are used for binding. Only one such annotation
  * may apply to a single injection point. You must also annotate binder
- * annotations with {@code @Retention(RUNTIME)}. 
+ * annotations with {@code @Retention(RUNTIME)}. For example:
+ *
+ * <pre>
+ *   {@code @}Retention(RUNTIME)
+ *   {@code @}Target({ FIELD, PARAMETER })
+ *   {@code @}Binder
+ *   public {@code @}interface Transactional {}
+ * </pre>
  *
  * @author crazybob@google.com (Bob Lee)
  */
diff --git a/src/com/google/inject/ContainerBuilder.java b/src/com/google/inject/ContainerBuilder.java
index 72fa970..b7b04ba 100644
--- a/src/com/google/inject/ContainerBuilder.java
+++ b/src/com/google/inject/ContainerBuilder.java
@@ -641,7 +641,7 @@
      * container. Useful for application initialization logic. Currently only
      * supported for container-scoped bindings.
      */
-    public BindingBuilder<T> preload() {
+    public BindingBuilder<T> eagerly() {
       this.preload = true;
       return this;
     }
diff --git a/src/com/google/inject/tools/jmx/Manager.java b/src/com/google/inject/tools/jmx/Manager.java
index 8a4688f..2d75f4b 100644
--- a/src/com/google/inject/tools/jmx/Manager.java
+++ b/src/com/google/inject/tools/jmx/Manager.java
@@ -52,14 +52,12 @@
       Container container) {
     // Register each binding independently.
     for (Binding<?> binding : container.getBindings().values()) {
+      // Construct the name manually so we can ensure proper ordering of the
+      // key/value pairs.
       StringBuilder name = new StringBuilder();
-
       name.append(domain).append(":");
-
       Key<?> key = binding.getKey();
-
       name.append("type=").append(quote(key.getType().toString()));
-
       Annotation annotation = key.getAnnotation();
       if (annotation != null) {
         name.append(",annotation=").append(quote(annotation.toString()));
diff --git a/test/com/google/inject/PreloadingTest.java b/test/com/google/inject/PreloadingTest.java
index de4a86f..3b57202 100644
--- a/test/com/google/inject/PreloadingTest.java
+++ b/test/com/google/inject/PreloadingTest.java
@@ -46,14 +46,14 @@
 
   private ContainerBuilder createContainerBuilder(Stage stage) {
     ContainerBuilder builder = new ContainerBuilder(stage);
-    builder.bind(Foo.class).in(CONTAINER).preload();
+    builder.bind(Foo.class).in(CONTAINER).eagerly();
     builder.bind(Bar.class);
     return builder;
   }
 
   public void testInvalidPreload() {
     ContainerBuilder builder = new ContainerBuilder();
-    builder.bind(Foo.class).preload();
+    builder.bind(Foo.class).eagerly();
     try {
       builder.create();
       fail();
