added a "BaseAPIClient" class for added extensibility and flexibility