Optimized and documented Client, added copy()