Some more drafting with Joel

NOTE: it occurs to me that we may been thinking about what the put into
interfaces the wrong way? Should we only be concerned with data that
would be needed by external classes? (though deciding whether or not
external classes need the data at this stage might lead to lack of
extensibility..)?