refactored how extenral deives are represneted, so that they are devised from their interfaces and not their applications.