add data_copy
add comment, change implementation of array