minor thing - might make sense to have column_tuples be a memoized property, so you don't implicitly assume that `get_headers` is always called before `get_data` and crash if that's not the case