docs: def first(self):
          """Returns the first ICachableItem in the ICachableSource"""
          # we need to create a new object to insure we don't corrupt the generator count
          csvsource = CSVSource(self.source, self.factory, self.key())
          try:
              item = csvsource.items().next()
              return item
          except StopIteration:
              return None