Introduce a service layer