could this be `IIndexed`? it reads a little awkward but we will remain consistent with out protocol naming