diff --git a/predicate-transformers.cabal b/predicate-transformers.cabal
--- a/predicate-transformers.cabal
+++ b/predicate-transformers.cabal
@@ -1,7 +1,7 @@
 cabal-version:       2.4
 
 name:                predicate-transformers
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            A library for writing predicates and transformations over predicates in Haskell
 description:
   This package provides ways to write predicates such that they compose nicely and are easy to debug.
diff --git a/src/PredicateTransformers.hs b/src/PredicateTransformers.hs
--- a/src/PredicateTransformers.hs
+++ b/src/PredicateTransformers.hs
@@ -5,7 +5,6 @@
 -- and there are utilities for using predicate transformers with (`lens`-style) optics.
 module PredicateTransformers where
 
-import Prelude hiding (all)
 import Control.Lens hiding (index, zoom)
 import Data.Foldable(toList)
 import Data.Functor.Rep(Representable(..))
@@ -63,6 +62,10 @@
 only p [x] = p x
 only _ _ = False
 
+-- |Test all predicates against one value.
+allTrue :: [Pred a] -> Pred a
+allTrue ps a = all ($ a) ps
+
 -- |Given a list of predicates and a list of values, ensure that each predicate holds for each respective value.
 -- Fails if the two lists have different lengths.
 dist :: [Pred a] -> Pred [a]
@@ -90,6 +93,17 @@
 (==>) :: a -> b -> (a, b)
 (==>) = (,)
 
+pair :: Pred a -> Pred b -> Pred (a,b)
+pair f s (a,b) = f a && s b
+
+eitherWay :: Pred a -> Pred b -> Pred (Either a b)
+eitherWay f _ (Left a) = f a
+eitherWay _ g (Right b) = g b
+
+-- |Flipped function composition, meant to be used postfix.
+(!) :: (b -> a) -> (a -> c) -> b -> c
+(!) = flip (.)
+
 -- |Prints the input of a predicate, for debugging.
 traced :: Show a => PT a a
-traced = function traceShowId
+traced p a = traceShow a (p a)
