Add user_data argument to callback