add some transaction handling
add some futures to make this service async