modified design to include possibility of concurrency, and completed initialization of client