(quick notes, needs to be further documented)
The KeyValueCoding interface is also implemented by CustomObject; it defines methods for accessing and setting attributes' values to keys. In fact, the RelationshipManipulation interface is, somehow, the equivalent of the KeyValueCoding for relationships.
The KeyValueCoding interface defines methods valueForKey and takeValueForKey. These methods allow you to access a property (i.e. the value stored for an attribute or a relationship) in an object without knowing exactly how it is stored. This is quite similar to, for example, the ``Unified Dotted Notation'' (see: Name Mapper Syntax and Underscored Attributes in CheetahTemplate's documentation).