Currently Node derived from GeometryObject has a attribute called user data which can be used to place data associated to the node, so that you can reference the data directed from the node rather than doing a further look in a data set. This is of type object. Would it be better to use generics and have UserData of type . This would then remove the processing to cast to and from object within the code.