clean up - avoid realloc