What about using a ClassLoader architecture for dynamic runtime adaptition to whatever enviroment we are running in i.e. If we are using JDK1.3 Classloader find's out using System.env and dynamically loads whatever classes are nessicary to operate most efficiantly in that enviroment. This would allow for maximum compatibility but remove any compilie-tine fiddling. Just my 2 cents worth Sean Allen