client read loop draft