avoid calling as.list.data.frame