Separate common features into BaseClient