add client functions