diff --git a/Codec/Encryption/OpenPGP/Arbitrary.hs b/Codec/Encryption/OpenPGP/Arbitrary.hs
--- a/Codec/Encryption/OpenPGP/Arbitrary.hs
+++ b/Codec/Encryption/OpenPGP/Arbitrary.hs
@@ -58,7 +58,7 @@
         return (SigSubPacket crit pl)
 
 instance Arbitrary SigSubPacketPayload where
-    arbitrary = oneof [sct, set, ec, ts, re, ket, psa, rk, i, nd, phas, pcas, ksps, pks, puid, purl, kfs, suid, rfr, fs, st {-, es -}]
+    arbitrary = oneof [sct, set, ec, ts, re, ket, psa, rk, i, nd, phas, pcas, ksps, pks, puid, purl, kfs, suid, rfr, fs, st {-, es -}, udss, oss]
         where
             sct = arbitrary >>= return . SigCreationTime
             set = arbitrary >>= return . SigExpirationTime
@@ -82,7 +82,8 @@
             fs = arbitrary >>= return . Features
             st = arbitrary >>= \pka -> arbitrary >>= \ha -> arbitrary >>= \sh -> return (SignatureTarget pka ha sh)
             es = arbitrary >>= return . EmbeddedSignature -- FIXME: figure out why EmbeddedSignature fails to serialize properly
-            -- FIXME: finish this
+            udss = choose (100,110) >>= \a -> arbitrary >>= \b -> return (UserDefinedSigSub a b)
+            oss = choose (111,127) >>= \a -> arbitrary >>= \b -> return (OtherSigSub a b) -- FIXME: more comprehensive range
 
 --
 
diff --git a/Data/Conduit/OpenPGP/Filter.hs b/Data/Conduit/OpenPGP/Filter.hs
--- a/Data/Conduit/OpenPGP/Filter.hs
+++ b/Data/Conduit/OpenPGP/Filter.hs
@@ -28,6 +28,7 @@
 import qualified Data.Conduit.List as CL
 import Data.Maybe (fromMaybe)
 
+import Codec.Encryption.OpenPGP.Fingerprint (eightOctetKeyID, fingerprint)
 import Codec.Encryption.OpenPGP.Internal (sigType, sigPKA, sigHA)
 import Codec.Encryption.OpenPGP.KeyInfo (pubkeySize)
 import Codec.Encryption.OpenPGP.Types
@@ -57,13 +58,17 @@
 
 data PKPPredicate = PKPPredicate PKPVar PKPOp PKPValue
 
-data PKPVar = PKPVVersion
-            | PKPVPKA
-            | PKPVKeysize
-            | PKPVTimestamp
+data PKPVar = PKPVVersion     -- ^ public key version
+            | PKPVPKA         -- ^ public key algorithm
+            | PKPVKeysize     -- ^ public key size (in bits)
+            | PKPVTimestamp   -- ^ public key creation time
+            | PKPVEOKI        -- ^ public key's eight-octet key ID
+            | PKPVTOF         -- ^ public key's twenty-octet fingerprint
 
 data PKPValue = PKPInt Int
               | PKPPKA PubKeyAlgorithm
+              | PKPEOKI (Either String EightOctetKeyId)
+              | PKPTOF TwentyOctetFingerprint
     deriving Eq
 
 instance Ord PKPValue where
@@ -76,10 +81,10 @@
 
 data SPPredicate = SPPredicate SPVar SPOp SPValue
 
-data SPVar = SPVVersion
-           | SPVSigType
-           | SPVPKA
-           | SPVHA
+data SPVar = SPVVersion       -- ^ signature packet version
+           | SPVSigType       -- ^ signature packet tyep
+           | SPVPKA           -- ^ signature packet public key algorithm
+           | SPVHA            -- ^ signature packet hash algorithm
 
 data SPValue = SPInt Int
              | SPSigType SigType
@@ -99,7 +104,7 @@
 
 data OPredicate = OPredicate OVar OOp OValue
 
-data OVar = OVTag
+data OVar = OVTag   -- ^ OpenPGP packet tag
 
 data OValue = OInt Int
     deriving Eq
@@ -127,6 +132,8 @@
         vreduce (PKPVPKA, p) = PKPPKA (_pkalgo p)
         vreduce (PKPVKeysize, p) = PKPInt (fromMaybe 0 . hush . pubkeySize . _pubkey $ p) -- FIXME: a Left here should invalidate the predicate or something
         vreduce (PKPVTimestamp, p) = PKPInt (fromIntegral (_timestamp p))
+        vreduce (PKPVEOKI, p) = PKPEOKI (eightOctetKeyID p)
+        vreduce (PKPVTOF, p) = PKPTOF (fingerprint p)
 	kv DeprecatedV3 = 3
 	kv V4 = 4
 
diff --git a/hOpenPGP.cabal b/hOpenPGP.cabal
--- a/hOpenPGP.cabal
+++ b/hOpenPGP.cabal
@@ -1,5 +1,5 @@
 Name:                hOpenPGP
-Version:             1.5.2
+Version:             1.6
 Synopsis:            native Haskell implementation of OpenPGP (RFC4880)
 Description:         native Haskell implementation of OpenPGP (RFC4880)
 Homepage:            http://floss.scru.org/hOpenPGP/
@@ -255,4 +255,4 @@
 source-repository this
   type:     git
   location: git://git.debian.org/users/clint/hOpenPGP.git
-  tag:      v1.5.2
+  tag:      v1.6
