use void* instead of char* when suitable