implemented service layer