wrapped client code