reformulation to how SetUserData is used