diff --git a/hw-prim.cabal b/hw-prim.cabal
--- a/hw-prim.cabal
+++ b/hw-prim.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 4f88cd2fa46a5092fcd354ac1e47e7d3ea5d71eda338aaa197c9ec5c1ecb9afe
+-- hash: e13d367ccce10eb041455fee1fba2f253b49799a2caf12f1c21cdc05f3fc5f84
 
 name:           hw-prim
-version:        0.5.0.1
+version:        0.5.0.2
 synopsis:       Primitive functions and data types
 description:    Please see README.md
 category:       Data
@@ -53,6 +53,7 @@
       HaskellWorks.Data.Length
       HaskellWorks.Data.Naive
       HaskellWorks.Data.Positioning
+      HaskellWorks.Data.Product
       HaskellWorks.Data.Search
       HaskellWorks.Data.Sign
       HaskellWorks.Data.Snoc
diff --git a/src/HaskellWorks/Data/FromForeignRegion.hs b/src/HaskellWorks/Data/FromForeignRegion.hs
--- a/src/HaskellWorks/Data/FromForeignRegion.hs
+++ b/src/HaskellWorks/Data/FromForeignRegion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE BangPatterns      #-}
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE TypeOperators     #-}
 
 module HaskellWorks.Data.FromForeignRegion
   ( FromForeignRegion(..)
@@ -9,6 +10,7 @@
 
 import Data.Word
 import Foreign.ForeignPtr
+import HaskellWorks.Data.Product
 
 import qualified Data.ByteString          as BS
 import qualified Data.ByteString.Internal as BSI
@@ -36,6 +38,11 @@
 
 instance FromForeignRegion (DVS.Vector Word64) where
   fromForeignRegion (fptr, offset, size) = DVS.unsafeFromForeignPtr (castForeignPtr fptr) offset ((size + 7) `div` 8)
+
+instance  ( FromForeignRegion a
+          , FromForeignRegion b
+          ) => FromForeignRegion (a :*: b) where
+  fromForeignRegion r = fromForeignRegion r :*: fromForeignRegion r
 
 mmapFromForeignRegion :: FromForeignRegion a => FilePath -> IO a
 mmapFromForeignRegion filePath = do
diff --git a/src/HaskellWorks/Data/Product.hs b/src/HaskellWorks/Data/Product.hs
new file mode 100644
--- /dev/null
+++ b/src/HaskellWorks/Data/Product.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TypeOperators #-}
+
+module HaskellWorks.Data.Product where
+
+infixr :*:
+
+data (:*:) a b = (:*:) a b
+  deriving (Eq, Show)
