use calloc to remove memset(0)