diff --git a/hlrdb-core.cabal b/hlrdb-core.cabal
--- a/hlrdb-core.cabal
+++ b/hlrdb-core.cabal
@@ -1,5 +1,5 @@
 name:                hlrdb-core
-version:             0.1.2.0
+version:             0.1.2.1
 synopsis:            High-level Redis Database Core API
 description:         A library for type-driven interaction with Redis
 license:             MIT
@@ -29,10 +29,10 @@
     , HLRDB.Internal
   build-depends:
       base >= 4.9 && < 5.0
-    , bytestring ^>= 0.10.8.1
+    , bytestring ^>= 0.10.8.2
     , hashable ^>= 1.2.6.1
     , hedis ^>= 0.10.1
-    , lens ^>= 4.16
+    , lens (>= 4.16 && <= 4.18) || ^>= 4.18
     , mtl ^>= 2.2.2
     , profunctors ^>= 5.2.2
     , random ^>= 1.1
diff --git a/src/HLRDB/Primitives/Aggregate.hs b/src/HLRDB/Primitives/Aggregate.hs
--- a/src/HLRDB/Primitives/Aggregate.hs
+++ b/src/HLRDB/Primitives/Aggregate.hs
@@ -32,9 +32,9 @@
 
 -- | We can merge any two arbitrary mget queries.
 {-# INLINE aggregatePair #-}
-aggregatePair :: T x y a b -> T x y c d -> T x y (a,c) (b,d)
-aggregatePair (T f) (T g) = T $ \h (a,c) ->
-  (,) <$> f h a <*> g h c
+aggregatePair :: (Traversing p , Functor (p (a , a')) , Applicative (p (a , a'))) => p a b -> p a' b' -> p (a , a') (b , b')
+aggregatePair x y =
+  (,) <$> lmap (view _1) x <*> lmap (view _2) y
 
 -- Remember could probably be a Profunctor typeclass in general (is it?)
 -- | And we can remember the lookup
