+ moved reusable functionality to base class