At least need to test on the interface level. And more complicate if you don't want to expose the internal structure to interface http://www.javaspecialists.co.za/archive/newsletter.do?issue=126