add atomic_append func