http://www.byteslounge.com/tutorials/jdk-dynamic-proxies