Refactored base classes