introducing BaseClient