Generic options object and refactored client class