added client factory