much much better userdata (with pointer, yaaaay)