strong code refactoring, add abstractService base class