abstracting and less boilerplate to create services