added data transfer objects and service layer