the beginnings of trying to conver this to a cached object graph
thinking about it more
making the object graph cacheable
merging in teh object-graph branch. this ensures that two objets representing the same resource dont exist in the graph