Warnings--
It's safe to free(NULL)