Refactored Class Hierarchy.