implement some of the service part