base client framework done