client pimpl