size_t more appropriate than uintptr_t