add generic client library and sample