diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml
index fd154c7..d7f348c 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml
@@ -25,7 +25,7 @@
   <set-property name="gwt.logging.enabled" value="TRUE"/> 
   <set-property name="gwt.logging.logLevel" value="INFO"/>
   <set-property name="gwt.logging.consoleHandler" value="ENABLED" />
-  <set-property name="gwt.logging.developmentModeHandler" value="DISABLED" />
+  <set-property name="gwt.logging.developmentModeHandler" value="ENABLED" />
   <set-property name="gwt.logging.firebugHandler" value="ENABLED" />
   <set-property name="gwt.logging.hasWidgetsHandler" value="DISABLED" />
   <set-property name="gwt.logging.popupHandler" value="DISABLED" />
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java
index 37350c0..b8368a5 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java
@@ -20,6 +20,8 @@
 import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.event.shared.SimpleEventBus;
+import com.google.gwt.requestfactory.client.RequestFactoryLogHandler;
+import com.google.gwt.requestfactory.shared.LoggingRequest;
 import com.google.gwt.sample.dynatablerf.client.widgets.DayFilterWidget;
 import com.google.gwt.sample.dynatablerf.client.widgets.FavoritesWidget;
 import com.google.gwt.sample.dynatablerf.client.widgets.SummaryWidget;
@@ -62,8 +64,22 @@
       }
     });
 
-    DynaTableRequestFactory requests = GWT.create(DynaTableRequestFactory.class);
+    final DynaTableRequestFactory requests = 
+      GWT.create(DynaTableRequestFactory.class);
     requests.init(eventBus);
+    
+    // Add remote logging handler
+    RequestFactoryLogHandler.LoggingRequestProvider provider =
+      new RequestFactoryLogHandler.LoggingRequestProvider() {
+        @Override
+        public LoggingRequest getLoggingRequest() {
+          return requests.loggingRequest();
+        }
+      };
+    Logger.getLogger("").addHandler(
+        new RequestFactoryLogHandler(provider, Level.WARNING,
+            "WireActivityLogger"));
+    
     FavoritesManager manager = new FavoritesManager();
     PersonEditorWorkflow.register(eventBus, requests, manager);
 
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java
index ddbb5ce..abbb7a0 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java
@@ -16,6 +16,7 @@
 package com.google.gwt.sample.dynatablerf.shared;
 
 import com.google.gwt.requestfactory.shared.Instance;
+import com.google.gwt.requestfactory.shared.LoggingRequest;
 import com.google.gwt.requestfactory.shared.ProxyListRequest;
 import com.google.gwt.requestfactory.shared.ProxyRequest;
 import com.google.gwt.requestfactory.shared.RequestFactory;
@@ -64,6 +65,8 @@
 
   AddressRequest addressRequest();
 
+  LoggingRequest loggingRequest();
+
   PersonRequest personRequest();
 
   SchoolCalendarRequest schoolCalendarRequest();
diff --git a/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java b/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java
index e3b9b8d..3bc29bf 100644
--- a/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java
+++ b/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java
@@ -16,8 +16,8 @@
 
 package com.google.gwt.requestfactory.client;
 
+import com.google.gwt.requestfactory.shared.LoggingRequest;
 import com.google.gwt.requestfactory.shared.Receiver;
-import com.google.gwt.requestfactory.shared.RequestFactory;
 import com.google.gwt.requestfactory.shared.SyncResult;
 
 import java.util.Set;
@@ -30,7 +30,15 @@
  * A Handler that does remote logging for applications using RequestFactory.
  */
 public class RequestFactoryLogHandler extends Handler {
-  class LoggingReceiver implements Receiver<Long> {
+  
+  /** 
+   * Provides a logging request
+   */
+  public static interface LoggingRequestProvider {
+    LoggingRequest getLoggingRequest();
+  }
+  
+  private class LoggingReceiver implements Receiver<Long> {
     public void onSuccess(Long response, Set<SyncResult> syncResults) {
       if (response > 0) {
         logger.finest("Remote logging successful");
@@ -44,7 +52,7 @@
     Logger.getLogger(RequestFactoryLogHandler.class.getName());
   
   private boolean closed;
-  private RequestFactory requestFactory;
+  private LoggingRequestProvider requestProvider;
   private String ignoredLoggerSubstring;
   
   /**
@@ -56,9 +64,9 @@
    * activity going accross the wire. If we did not exclude these loggers, an
    * infinite loop would occur.
    */
-  public RequestFactoryLogHandler(RequestFactory requestFactory, Level level,
-      String ignoredLoggerSubstring) {
-    this.requestFactory = requestFactory;
+  public RequestFactoryLogHandler(LoggingRequestProvider requestProvider,
+      Level level, String ignoredLoggerSubstring) {
+    this.requestProvider = requestProvider;
     this.ignoredLoggerSubstring = ignoredLoggerSubstring;
     closed = false;
     setLevel(level);
@@ -85,7 +93,7 @@
     }
     
     Receiver<Long> loggingReceiver = new LoggingReceiver();
-    requestFactory.loggingRequest().logMessage(
+    requestProvider.getLoggingRequest().logMessage(
         record.getLevel().toString(),
         record.getLoggerName(),
         record.getMessage()).fire(loggingReceiver);
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java b/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
index c78d733..e399084 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
@@ -22,7 +22,6 @@
 import com.google.gwt.http.client.RequestCallback;
 import com.google.gwt.http.client.RequestException;
 import com.google.gwt.http.client.Response;
-import com.google.gwt.requestfactory.client.RequestFactoryLogHandler;
 import com.google.gwt.requestfactory.shared.EntityProxy;
 import com.google.gwt.requestfactory.shared.EntityProxyId;
 import com.google.gwt.requestfactory.shared.RequestEvent;
@@ -165,8 +164,6 @@
   public void init(EventBus eventBus) {
     this.valueStore = new ValueStoreJsonImpl();
     this.eventBus = eventBus;
-    Logger.getLogger("").addHandler(
-        new RequestFactoryLogHandler(this, Level.WARNING, wireLogger.getName()));
     logger.fine("Successfully initialized RequestFactory");
   }
 
diff --git a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
index ec8611c..3158f18 100644
--- a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
+++ b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
@@ -317,17 +317,6 @@
       requestSelectors.add(method);
     }
 
-    // In addition to the request selectors in the generated interface, there
-    // are a few which are in RequestFactory which also need to have
-    // implementations generated. Hard coding the addition of these here for now
-    JClassType t = generatorContext.getTypeOracle().findType(
-        RequestFactory.class.getName());
-    try {
-      requestSelectors.add(t.getMethod("loggingRequest", new JType[0]));
-    } catch (NotFoundException e) {
-      e.printStackTrace();
-    }
-
     JClassType proxyToTypeInterface = generatorContext.getTypeOracle().findType(
         ProxyToTypeMap.class.getName());
     // TODO: note, this seems like a bug. What if you have 2 RequestFactories?
diff --git a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
index 9d40015..b9cb34e 100644
--- a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
+++ b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
@@ -85,10 +85,5 @@
    */
   void init(EventBus eventBus);
 
-  // The following methods match the format for the generated sub-interfaces
-  // and implementations are generated using the same code we use to generate
-  // those. In order to ensure this happens, each of the request selectors
-  // needs to be manually added to the requestSelectors list in
-  // RequestFactoryGenerator.java
-  LoggingRequest loggingRequest();
+
 }
