use more efficient copying