Added guava and rewrote client implementation