data needs to be a pointer