service layer + entities + tests