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.1.0
+version:             0.1.1.1
 synopsis:            High-level Redis Database Core API
 description:         A library for type-driven interaction with Redis
 license:             MIT
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
@@ -16,6 +16,7 @@
 import Control.Lens hiding (Traversing)
 import Data.ByteString
 
+
 -- | Abstract representation for aggregation.
 newtype T x y a b = T (Traversal a b x y) deriving (Functor)
 
diff --git a/src/HLRDB/Structures/HSet.hs b/src/HLRDB/Structures/HSet.hs
--- a/src/HLRDB/Structures/HSet.hs
+++ b/src/HLRDB/Structures/HSet.hs
@@ -33,7 +33,7 @@
 -- | Lookup via key and subkeys, pairing each given subkey with the lookup result
 hmget :: (MonadRedis m , Traversable t) => RedisHSet a s b -> a -> t s -> m (t (s , Maybe b))
 hmget p@(RHSet (E _ _ d) (HSET e _)) k t = do
-  let f = (fmap . fmap . fmap) (d . pure) . unwrap . Redis.hmget (primKey p k) . fmap e
+  let f = (fmap . fmap . fmap) (d . pure) . fixEmpty (unwrap . Redis.hmget (primKey p k)) id . fmap e
   let xs = foldr (:) [] t
   reifyTraversal t <$> liftRedis (f xs)
   where
@@ -56,11 +56,7 @@
 -- | Set via key and subkeys
 hmset :: (MonadRedis m , Traversable t) => RedisHSet a s b -> a -> t (s , b) -> m ()
 hmset p@(RHSet (E _ eb _) (HSET e _)) k =
-    liftRedis
-  . ignore
-  . Redis.hmset (primKey p k)
-  . foldr (\x a -> (e (fst x) , runIdentity (eb (snd x))) : a) []
-
+    fixEmpty (ignore . unwrap . Redis.hmset (primKey p k)) (\(s,b) -> (e s , runIdentity $ eb b))
 
 -- | Delete via key and subkeys
 hdel :: (MonadRedis m , Traversable t) => RedisHSet a s b -> a -> t s -> m (ActionPerformed Deletion)
