RowanChristmas - 10/03/05 -- A copy? or the actual {{{CyData}}} object? Getting a copy seems like it would be more or less useless as I would not be able to have my changes reflected anywhere. Also I am not sure what we gain by not having this class extend {{{CyData/Definition}}} directly. It seems like the logical way to go, especailly since both of those classes are already implemented by the same class. EthanCerami - 10/4/05 - This is still very much open to debate, and I don't think anyone agrees 100% with my original proposal to have {{{CyAttributes}}} return {{{CyData}}}. However, if we were to adopt this approach, I agree it would have to return the actual {{{CyData}}} object, and not a copy or a clone. Otherwise, things would get really confusing. And, I definitely see the logic in having {{{CyAttributes}}} extend {{{CyData}}} / {{{CyDefinition}}}. However, I think there is also some logic in having {{{CyAttributes}}} embed {{{CyData}}} too. My current thinking on this is that we rename {{{CyData}}} into something more meaningful, and more clearly tied to its role as a data structure. For example, we might consider renaming it to something like {{{SparseTree}}}. If that were the case, then we could simple say that {{{CyAttributes}}} uses a {{{SparseTree}}} as a back-end data structure, and {{{CyAttributes}}} provides simplified access to that data structure. If you want to add data that is any more complicated, you can obtain the backend data store directly via {{{getSparseTree()}}}, and work on the data structure directly. IlianaAvila - 10/04/05 -- I have a request, could we link the Javadocs for CyData/CyDefinition in this Wiki, so that we can all look at them? I think these two classes need to be renamed, urgently. The way we name things affects the way we think about them, like Ethan suggests above. I think we should talk about that renaming during our conference call. It sounds to me like "CyData" itself is an interface, right? There is a separate class (that uses a tree) that implements it. Why not have "CyAttributes" contain the methods that "CyData" has (which I hear are a few), and then, have the class that implements "CyData" (I don't know its name) be the back end data structure for "CyAttributes"? "CyAttributes" could have a get method for "CyDefinition". I don't think "CyAttributes" should extend "CyDefinition". EthanCerami - 10/04/05 -- Subgroup (Nerius, Iliana, and Ethan) agreed to embed {{{CyData}}} instead of extending it.