Client implementation