_dispatch():  Do no re-define the resolve_dotted_atttribute() function
    every time this gets called; move it out as a global helper function.
    Simplify the call to the _dispatch() method of the registered instance.
diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py
index 89900bd..0a91683 100644
--- a/Lib/SimpleXMLRPCServer.py
+++ b/Lib/SimpleXMLRPCServer.py
@@ -147,22 +147,6 @@
         not be called by SimpleXMLRPCServer.
         """
 
-        def resolve_dotted_attribute(obj, attr):
-            """resolve_dotted_attribute(math, 'cos.__doc__') => math.cos.__doc__
-
-            Resolves a dotted attribute name to an object. Raises
-            an AttributeError if any attribute in the chain starts
-            with a '_'.
-            """
-            for i in attr.split('.'):
-                if i.startswith('_'):
-                    raise AttributeError(
-                        'attempt to access private attribute "%s"' % i
-                        )
-                else:
-                    obj = getattr(obj,i)
-            return obj
-
         func = None
         try:
             # check to see if a matching function has been registered
@@ -171,14 +155,11 @@
             if self.server.instance is not None:
                 # check for a _dispatch method
                 if hasattr(self.server.instance, '_dispatch'):
-                    return apply(
-                        getattr(self.server.instance,'_dispatch'),
-                        (method, params)
-                        )
+                    return self.server.instance._dispatch(method, params)
                 else:
                     # call instance method directly
                     try:
-                        func = resolve_dotted_attribute(
+                        func = _resolve_dotted_attribute(
                             self.server.instance,
                             method
                             )
@@ -196,6 +177,21 @@
         if self.server.logRequests:
             BaseHTTPServer.BaseHTTPRequestHandler.log_request(self, code, size)
 
+
+def _resolve_dotted_attribute(obj, attr):
+    """Resolves a dotted attribute name to an object.  Raises
+    an AttributeError if any attribute in the chain starts with a '_'.
+    """
+    for i in attr.split('.'):
+        if i.startswith('_'):
+            raise AttributeError(
+                'attempt to access private attribute "%s"' % i
+                )
+        else:
+            obj = getattr(obj,i)
+    return obj
+
+
 class SimpleXMLRPCServer(SocketServer.TCPServer):
     """Simple XML-RPC server.