val should be (void *)