Public on ClientImpl is undesirable, but not the end of the world... If it needs to be public, it needs a comment explaining what it does and why it needs to be public.