use only one user data struct