no need to cast void*