Client class(incomplete)