add user callback