added service layer