refactor the multiple des service implementations to use inheritance