added is_data and made is_data_list require !is.data.frame