add data accessor and iter