         {# call caps_get_structure #} caps (fromIntegral index) >>=
             maybePeek peekStructure
 
+-- | Returns a new 'Caps' containing only the 'Structure' at the given
+--   index of the caps.
+capsCopyNth :: Caps
+            -> Word
+            -> Maybe Caps
+capsCopyNth caps index =
+    unsafePerformIO $
+        {# call caps_copy_nth #} caps (fromIntegral index) >>=
+            maybePeek takeCaps
+
+-- | Returns 'True' if the caps represents no media formats.
 capsIsEmpty :: Caps
             -> Bool
 capsIsEmpty caps =
     toBool $ unsafePerformIO $
         {# call caps_is_empty #} caps
 
+-- | Returns 'True' if the caps is fixed.
 capsIsFixed :: Caps
             -> Bool
 capsIsFixed caps =
     toBool $ unsafePerformIO $
         {# call caps_is_fixed #} caps
 
+-- | Returns 'True' if the caps represent the same set of capabilities.
 capsIsEqual :: Caps
             -> Caps
             -> Bool

  capsNormalize,
  capsFromString,
  capsToString,
  
  CapsM,
  capsCreate,
  capsModify,
  capsAppend,
  capsMerge,
  capsAppendStructure,
  capsMergeStructure,
  capsRemoveStructure,

    toBool $ unsafePerformIO $
        {# call caps_is_always_compatible #} caps1 caps2

-- | Returns 'True' if all caps represented by the first argument are
--   also represented by the second.
--   
--   This function does not work reliably if optional properties for
--   caps are included on one caps and omitted on the other.
capsIsSubset :: Caps
             -> Caps
             -> Bool
