completely rewrote client from ground up...