Extract Client to separate module