refactor client
add horizontal scalability with redis