Moved common functionality to base class