Decouple ViewableResource and EditableResource.