Refactoring client library for better separation of concerns, clearer domain model for client callers.