diff --git a/src/Tahoe/SDMF/Internal/Capability.hs b/src/Tahoe/SDMF/Internal/Capability.hs
index 0e6249bc2d6a5ab1440d1e2ff68e9426b967a620..cf6bf7c30a251376cb7d2c1f20a6394b756f0622 100644
--- a/src/Tahoe/SDMF/Internal/Capability.hs
+++ b/src/Tahoe/SDMF/Internal/Capability.hs
@@ -53,6 +53,9 @@ data Verifier = Verifier
     }
     deriving (Eq, Show)
 
+instance Ord Verifier where
+    a <= b = (verifierStorageIndex a <= verifierStorageIndex b)
+
 instance ConfidentialShowable Verifier where
     confidentiallyShow = dangerRealShow . SDMFVerifier
 
@@ -63,6 +66,9 @@ data Reader = Reader
     }
     deriving (Eq, Show)
 
+instance Ord Reader where
+    a <= b = (readerVerifier a <= readerVerifier b)
+
 instance ConfidentialShowable Reader where
     confidentiallyShow = dangerRealShow . SDMFReader
 
@@ -73,6 +79,9 @@ data Writer = Writer
     }
     deriving (Eq, Show)
 
+instance Ord Writer where
+    a <= b = (writerReader a <= writerReader b)
+
 instance ConfidentialShowable Writer where
     confidentiallyShow = dangerRealShow . SDMFWriter
 
diff --git a/src/Tahoe/SDMF/Internal/Keys.hs b/src/Tahoe/SDMF/Internal/Keys.hs
index fbe3068211e516a502c7c6f0708ad9130ad2de79..db8d71dddd8e428c8b85cfeaf5ec018bbbc6cc94 100644
--- a/src/Tahoe/SDMF/Internal/Keys.hs
+++ b/src/Tahoe/SDMF/Internal/Keys.hs
@@ -86,7 +86,7 @@ instance Binary Read where
         let (CryptoPassed unRead) = cipherInit readKeyBytes
         pure Read{..}
 
-newtype StorageIndex = StorageIndex {unStorageIndex :: B.ByteString} deriving newtype (Eq)
+newtype StorageIndex = StorageIndex {unStorageIndex :: B.ByteString} deriving newtype (Eq, Ord)
 
 instance Show StorageIndex where
     show (StorageIndex si) =