add realloc function