port signature generation to new client class. include a test