Add separate method for registration timeouts
Implement base client
Change sample_client to use base client
 Change error and timeout callback parameters to keyword parameters