diff --git a/src/pixie/blends.nim b/src/pixie/blends.nim
index aca4bbc..72c7246 100644
--- a/src/pixie/blends.nim
+++ b/src/pixie/blends.nim
@@ -35,10 +35,10 @@ type
     bmIntersectMask
     bmExcludeMask
 
-  Blender* = proc(backdrop, source: ColorRGBA): ColorRGBA ## Function signature
-  ## returned by blender.
-  Masker* = proc(backdrop, source: uint8): uint8 ## Function signature returned
-  ## by masker.
+  Blender* = proc(backdrop, source: ColorRGBA): ColorRGBA
+    ## Function signature returned by blender.
+  Masker* = proc(backdrop, source: uint8): uint8
+    ## Function signature returned by masker.
 
 when defined(release):
   {.push checks: off.}
@@ -515,46 +515,10 @@ when defined(amd64) and not defined(pixieNoSimd):
   import nimsimd/sse2
 
   type
-    BlenderSimd* = proc(blackdrop, source: M128i): M128i ## Function signature
-    ## returned by blenderSimd.
-    MaskerSimd* = proc(blackdrop, source: M128i): M128i ## Function signature
-    ## returned by maskerSimd.
-
-  proc packAlphaValues*(v: M128i): M128i {.inline.} =
-    ## Shuffle the alpha values for these 4 colors to the first 4 bytes
-    result = mm_srli_epi32(v, 24)
-    let
-      i = mm_srli_si128(result, 3)
-      j = mm_srli_si128(result, 6)
-      k = mm_srli_si128(result, 9)
-      first32 = cast[M128i]([uint32.high, 0, 0, 0])
-    result = mm_or_si128(mm_or_si128(result, i), mm_or_si128(j, k))
-    result = mm_and_si128(result, first32)
-
-  proc unpackAlphaValues*(v: M128i): M128i {.inline.} =
-    ## Unpack the first 32 bits into 4 rgba(0, 0, 0, value)
-    let
-      first32 = cast[M128i]([uint32.high, 0, 0, 0])                # First 32 bits
-      alphaMask = mm_set1_epi32(cast[int32](0xff000000))           # Only `a`
-
-    result = mm_shuffle_epi32(v, MM_SHUFFLE(0, 0, 0, 0))
-
-    var
-      i = mm_and_si128(result, first32)
-      j = mm_and_si128(result, mm_slli_si128(first32, 4))
-      k = mm_and_si128(result, mm_slli_si128(first32, 8))
-      l = mm_and_si128(result, mm_slli_si128(first32, 12))
-
-    # Shift the values to `a`
-    i = mm_slli_si128(i, 3)
-    j = mm_slli_si128(j, 2)
-    k = mm_slli_si128(k, 1)
-    # l = mm_slli_si128(l, 0)
-
-    result = mm_and_si128(
-      mm_or_si128(mm_or_si128(i, j), mm_or_si128(k, l)),
-      alphaMask
-    )
+    BlenderSimd* = proc(blackdrop, source: M128i): M128i
+      ## Function signature returned by blenderSimd.
+    MaskerSimd* = proc(blackdrop, source: M128i): M128i
+      ## Function signature returned by maskerSimd.
 
   proc blendNormalSimd(backdrop, source: M128i): M128i =
     let
diff --git a/src/pixie/images.nim b/src/pixie/images.nim
index 6bd4d59..bf908c2 100644
--- a/src/pixie/images.nim
+++ b/src/pixie/images.nim
@@ -1,4 +1,4 @@
-import blends, bumpy, chroma, common, masks, system/memory, vmath
+import blends, bumpy, chroma, common, masks, pixie/internal, system/memory, vmath
 
 when defined(amd64) and not defined(pixieNoSimd):
   import nimsimd/sse2
diff --git a/src/pixie/internal.nim b/src/pixie/internal.nim
new file mode 100644
index 0000000..c2fc581
--- /dev/null
+++ b/src/pixie/internal.nim
@@ -0,0 +1,38 @@
+when defined(amd64) and not defined(pixieNoSimd):
+  import nimsimd/sse2
+
+  proc packAlphaValues*(v: M128i): M128i {.inline.} =
+    ## Shuffle the alpha values for these 4 colors to the first 4 bytes
+    result = mm_srli_epi32(v, 24)
+    let
+      i = mm_srli_si128(result, 3)
+      j = mm_srli_si128(result, 6)
+      k = mm_srli_si128(result, 9)
+      first32 = cast[M128i]([uint32.high, 0, 0, 0])
+    result = mm_or_si128(mm_or_si128(result, i), mm_or_si128(j, k))
+    result = mm_and_si128(result, first32)
+
+  proc unpackAlphaValues*(v: M128i): M128i {.inline.} =
+    ## Unpack the first 32 bits into 4 rgba(0, 0, 0, value)
+    let
+      first32 = cast[M128i]([uint32.high, 0, 0, 0])                # First 32 bits
+      alphaMask = mm_set1_epi32(cast[int32](0xff000000))           # Only `a`
+
+    result = mm_shuffle_epi32(v, MM_SHUFFLE(0, 0, 0, 0))
+
+    var
+      i = mm_and_si128(result, first32)
+      j = mm_and_si128(result, mm_slli_si128(first32, 4))
+      k = mm_and_si128(result, mm_slli_si128(first32, 8))
+      l = mm_and_si128(result, mm_slli_si128(first32, 12))
+
+    # Shift the values to `a`
+    i = mm_slli_si128(i, 3)
+    j = mm_slli_si128(j, 2)
+    k = mm_slli_si128(k, 1)
+    # l = mm_slli_si128(l, 0)
+
+    result = mm_and_si128(
+      mm_or_si128(mm_or_si128(i, j), mm_or_si128(k, l)),
+      alphaMask
+    )
diff --git a/src/pixie/paths.nim b/src/pixie/paths.nim
index 66af2df..777c9da 100644
--- a/src/pixie/paths.nim
+++ b/src/pixie/paths.nim
@@ -1,4 +1,5 @@
-import blends, bumpy, chroma, common, images, masks, paints, strutils, vmath
+import blends, bumpy, chroma, common, images, masks, paints, pixie/internal,
+    strutils, vmath
 
 when defined(amd64) and not defined(pixieNoSimd):
   import nimsimd/sse2