requiring dataframes instead of arrays