In one embodiment, the components, sub-components and/or modules associated with the present invention can be implemented using object oriented languages such as C++ or Java using well defined software interfaces such that the implementation of any component can replaced by another with equivalent functionality without affecting the overall functionality of the workbench.