client: final version