Client loop