added buffer_append