Java RMI extends Java with distributed objects whose methods can be called from remote clients. traction is supported using statically-generated proxy objects on the client to hide network communication. One limitation of Java RMI is that these proxies can only forward method calls from client to server. Many applications can benefit from smart proxies that shift some application responsibilities to the client. Normally, developers must manually implement such proxies. This paper describes an aspect-oriented approach to creating smart proxies. This approach allows a server to extend an existing proxy with new capabilities at runtime. This approach is demonstrated with two examples.