add error check for calloc