improve dataframe support