used xrealloc instead of realloc