The only difference between PersonsClient and BuildingsClient is the word Persons in various places. Maybe refactor to a Client<T>?