OO Design Dilemma: Auditing Changes Across Hierarchical Objects