Refactored Class Hierarchy.
Refactored Class Hierarchy.