update: use better vtable deref function thanks to vtjnash