got rid of user_data pointer--I use params instead