added low level io append_data