diff --git a/memory.cabal b/memory.cabal
--- a/memory.cabal
+++ b/memory.cabal
@@ -1,12 +1,15 @@
 Name:                memory
-Version:             0.2
+Version:             0.3
 Synopsis:            memory and related abtraction stuff
 Description:
     Chunk of memory, polymorphic byte array management and manipulation
     .
     * A polymorphic byte array abstraction and function similar to strict ByteString.
+    .
     * Different type of byte array abstraction.
+    .
     * Raw memory IO operations (memory set, memory copy, ..)
+    .
     * Aliasing with endianness support.
 License:             BSD3
 License-file:        LICENSE
@@ -86,6 +89,9 @@
   type:              exitcode-stdio-1.0
   hs-source-dirs:    tests
   Main-is:           Tests.hs
+  Other-modules:     Imports
+                     SipHash
+                     Utils
   Build-Depends:     base >= 3 && < 5
                    , tasty
                    , tasty-quickcheck
diff --git a/tests/Imports.hs b/tests/Imports.hs
new file mode 100644
--- /dev/null
+++ b/tests/Imports.hs
@@ -0,0 +1,12 @@
+module Imports
+    ( module X
+    ) where
+
+import Control.Applicative as X
+import Control.Monad as X
+import Data.Foldable as X (foldl')
+import Data.Monoid as X
+
+import Test.Tasty as X
+import Test.Tasty.HUnit as X
+import Test.Tasty.QuickCheck as X hiding (vector)
diff --git a/tests/SipHash.hs b/tests/SipHash.hs
new file mode 100644
--- /dev/null
+++ b/tests/SipHash.hs
@@ -0,0 +1,276 @@
+{-# LANGUAGE ViewPatterns #-}
+{-# LANGUAGE OverloadedStrings #-}
+module SipHash (tests) where
+
+import           Imports
+import           Utils
+import qualified Data.ByteArray          as B
+import           Data.ByteArray.Hash (SipKey(..), SipHash(..), sipHash)
+
+katKey = SipKey 0x0706050403020100 0x0f0e0d0c0b0a0908
+
+vectors =
+    [ ( katKey
+      , ""
+      , SipHash 0x726fdb47dd0e0e31
+      )
+    , ( katKey
+      , "\x00"
+      , SipHash 0x74f839c593dc67fd
+      )
+    , ( katKey
+      , "\x00\x01"
+      , SipHash 0x0d6c8009d9a94f5a
+      )
+    , ( katKey
+      , "\x00\x01\x02"
+      , SipHash 0x85676696d7fb7e2d
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03"
+      , SipHash 0xcf2794e0277187b7
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04"
+      , SipHash 0x18765564cd99a68d
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05"
+      , SipHash 0xcbc9466e58fee3ce
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06"
+      , SipHash 0xab0200f58b01d137
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07"
+      , SipHash 0x93f5f5799a932462
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08"
+      , SipHash 0x9e0082df0ba9e4b0
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09"
+      , SipHash 0x7a5dbbc594ddb9f3
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
+      , SipHash 0xf4b32f46226bada7
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b"
+      , SipHash 0x751e8fbc860ee5fb
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c"
+      , SipHash 0x14ea5627c0843d90
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d"
+      , SipHash 0xf723ca908e7af2ee
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e"
+      , SipHash 0xa129ca6149be45e5
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
+      , SipHash 0x3f2acc7f57c29bdb
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
+      , SipHash 0x699ae9f52cbe4794
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11"
+      , SipHash 0x4bc1b3f0968dd39c
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12"
+      , SipHash 0xbb6dc91da77961bd
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
+      , SipHash 0xbed65cf21aa2ee98
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
+      , SipHash 0xd0f2cbb02e3b67c7
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15"
+      , SipHash 0x93536795e3a33e88
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16"
+      , SipHash 0xa80c038ccd5ccec8
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17"
+      , SipHash 0xb8ad50c6f649af94
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18"
+      , SipHash 0xbce192de8a85b8ea
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19"
+      , SipHash 0x17d835b85bbb15f3
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a"
+      , SipHash 0x2f2e6163076bcfad
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b"
+      , SipHash 0xde4daaaca71dc9a5
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c"
+      , SipHash 0xa6a2506687956571
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d"
+      , SipHash 0xad87a3535c49ef28
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e"
+      , SipHash 0x32d892fad841c342
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
+      , SipHash 0x7127512f72f27cce
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
+      , SipHash 0xa7f32346f95978e3
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21"
+      , SipHash 0x12e0b01abb051238
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22"
+      , SipHash 0x15e034d40fa197ae
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23"
+      , SipHash 0x314dffbe0815a3b4
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24"
+      , SipHash 0x027990f029623981
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25"
+      , SipHash 0xcadcd4e59ef40c4d
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26"
+      , SipHash 0x9abfd8766a33735c
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27"
+      , SipHash 0x0e3ea96b5304a7d0
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28"
+      , SipHash 0xad0c42d6fc585992
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29"
+      , SipHash 0x187306c89bc215a9
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a"
+      , SipHash 0xd4a60abcf3792b95
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b"
+      , SipHash 0xf935451de4f21df2
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c"
+      , SipHash 0xa9538f0419755787
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d"
+      , SipHash 0xdb9acddff56ca510
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e"
+      , SipHash 0xd06c98cd5c0975eb
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
+      , SipHash 0xe612a3cb9ecba951
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
+      , SipHash 0xc766e62cfcadaf96
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31"
+      , SipHash 0xee64435a9752fe72
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32"
+      , SipHash 0xa192d576b245165a
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33"
+      , SipHash 0x0a8787bf8ecb74b2
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34"
+      , SipHash 0x81b3e73d20b49b6f
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35"
+      , SipHash 0x7fa8220ba3b2ecea
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36"
+      , SipHash 0x245731c13ca42499
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37"
+      , SipHash 0xb78dbfaf3a8d83bd
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38"
+      , SipHash 0xea1ad565322a1a0b
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39"
+      , SipHash 0x60e61c23a3795013
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a"
+      , SipHash 0x6606d7e446282b93
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b"
+      , SipHash 0x6ca4ecb15c5f91e1
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c"
+      , SipHash 0x9f626da15c9625f3
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d"
+      , SipHash 0xe51b38608ef25f57
+      )
+    , ( katKey
+      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e"
+      , SipHash 0x958a324ceb064572
+      )
+    ]
+
+katTests witnessID v = map makeTest $ numberedList v
+    where makeTest (i, (key,msg,tag)) = testCase ("kat " ++ show i) $ tag @=? sipHash key (witnessID $ B.pack $ unS msg)
+
+tests witnessID =
+    [ testGroup "KAT" $ katTests witnessID vectors
+    ]
diff --git a/tests/Utils.hs b/tests/Utils.hs
new file mode 100644
--- /dev/null
+++ b/tests/Utils.hs
@@ -0,0 +1,25 @@
+module Utils where
+
+import           Data.Word
+import           Data.ByteArray               (Bytes, ScrubbedBytes)
+
+unS :: String -> [Word8]
+unS = map (fromIntegral . fromEnum)
+
+ascii :: [Word8] -> String
+ascii = map (toEnum . fromIntegral)
+
+-- | similar to proxy
+data Witness a = Witness
+
+withWitness :: Witness a -> a -> a
+withWitness _ a = a
+
+withBytesWitness :: Bytes -> Bytes
+withBytesWitness = withWitness (Witness :: Witness Bytes)
+
+withScrubbedBytesWitness :: ScrubbedBytes -> ScrubbedBytes
+withScrubbedBytesWitness = id
+
+numberedList :: [a] -> [(Int, a)]
+numberedList = zip [1..]
