Hi Will: Your description below intrigued me. If software components have only traditional interfaces (e.g. a Java-like interface) it may be hard to reuse them. In this sense modularity may hinder reuse. But if we allow a "second" interface which allows to control implementation strategies, reuse becomes easier. In this sense, it is not modularity which hinders reuse but the lack of appropriate interfaces which hinders reuse. When you say that we try to maximize both sides of the tradeoff you mean that we try to maximize both modularity and reuse. I find that a very good description of what we do. Did I interpret your statement reasonably? -- Karl I think the students would be interested to hear about your research. In COM 1205 I have placed a great deal of emphasis upon abstract data types, information hiding, and representation independence, using interfaces that work regardless of whether the values of an ADT are represented as C++ scalars, instances of structs/classes, or pointers. Another emphasis has been reusable software, primarily in the form of the STL. In the next three lectures I will say just a little about the tradeoff between modularity and reuse that occurs in extensible OO frameworks. I think they would like to hear about your techniques for maximizing both sides of that tradeoff.