The question of converting parts of Node to a value type is a no answer answer. What I wanted you to think about is what makes the Node type unique. What I think makes Node unique is that it is a data structure used to create a hierarchy of objects. Thus whenever you create hiearchies that can be altered, and recursive value types cannot be used under any circumstance. Thus a general rule is that you will define reference types more often than you will define value types.