diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py
index db5e034..65d130a 100644
--- a/tests/primitives/test_nist.py
+++ b/tests/primitives/test_nist.py
@@ -18,6 +18,7 @@
 from __future__ import absolute_import, division, print_function
 
 import binascii
+import itertools
 import os
 
 import pytest
@@ -27,29 +28,35 @@
 from ..utils import load_nist_vectors_from_file
 
 
-def parameterize_kat_encrypt(fname):
+def parameterize_encrypt_test(cipher, vector_type, fnames):
     return pytest.mark.parametrize(("key", "iv", "plaintext", "ciphertext"),
-        load_nist_vectors_from_file(
-            os.path.join("AES/KAT/", fname),
-            "ENCRYPT",
-            ["key", "iv", "plaintext", "ciphertext"],
-        ),
-    )
-
-
-def paramterize_mmt_encrypt(fname):
-    return pytest.mark.parametrize(("key", "iv", "plaintext", "ciphertext"),
-        load_nist_vectors_from_file(
-            os.path.join("AES/MMT/", fname),
-            "ENCRYPT",
-            ["key", "iv", "plaintext", "ciphertext"],
-        )
+        list(itertools.chain.from_iterable(
+            load_nist_vectors_from_file(
+                os.path.join(cipher, vector_type, fname),
+                "ENCRYPT",
+                ["key", "iv", "plaintext", "ciphertext"],
+            )
+            for fname in fnames
+        ))
     )
 
 
 class TestAES_CBC(object):
-    @parameterize_kat_encrypt("CBCGFSbox128.rsp")
-    def test_KAT_GFSbox_128_encrypt(self, key, iv, plaintext, ciphertext):
+    @parameterize_encrypt_test("AES", "KAT", [
+        "CBCGFSbox128.rsp",
+        "CBCGFSbox192.rsp",
+        "CBCGFSbox256.rsp",
+        "CBCKeySbox128.rsp",
+        "CBCKeySbox192.rsp",
+        "CBCKeySbox256.rsp",
+        "CBCVarKey128.rsp",
+        "CBCVarKey192.rsp",
+        "CBCVarKey256.rsp",
+        "CBCVarTxt128.rsp",
+        "CBCVarTxt192.rsp",
+        "CBCVarTxt256.rsp",
+    ])
+    def test_KAT(self, key, iv, plaintext, ciphertext):
         cipher = BlockCipher(
             ciphers.AES(binascii.unhexlify(key)),
             modes.CBC(binascii.unhexlify(iv)),
@@ -58,138 +65,12 @@
         actual_ciphertext += cipher.finalize()
         assert binascii.hexlify(actual_ciphertext) == ciphertext
 
-    @parameterize_kat_encrypt("CBCGFSbox192.rsp")
-    def test_KAT_GFSbox_192_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCGFSbox256.rsp")
-    def test_KAT_GFSbox_256_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCKeySbox128.rsp")
-    def test_KAT_KeySbox_128_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCKeySbox192.rsp")
-    def test_KAT_KeySbox_192_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCKeySbox256.rsp")
-    def test_KAT_KeySbox_256_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCVarKey128.rsp")
-    def test_KAT_VarKey_128_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCVarKey192.rsp")
-    def test_KAT_VarKey_192_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCVarKey256.rsp")
-    def test_KAT_VarKey_256_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCVarTxt128.rsp")
-    def test_KAT_VarTxt_128_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCVarTxt192.rsp")
-    def test_KAT_VarTxt_192_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @parameterize_kat_encrypt("CBCVarTxt256.rsp")
-    def test_KAT_VarTxt_256_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @paramterize_mmt_encrypt("CBCMMT128.rsp")
-    def test_MMT_128_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @paramterize_mmt_encrypt("CBCMMT192.rsp")
-    def test_MMT_192_encrypt(self, key, iv, plaintext, ciphertext):
-        cipher = BlockCipher(
-            ciphers.AES(binascii.unhexlify(key)),
-            modes.CBC(binascii.unhexlify(iv)),
-        )
-        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
-        actual_ciphertext += cipher.finalize()
-        assert binascii.hexlify(actual_ciphertext) == ciphertext
-
-    @paramterize_mmt_encrypt("CBCMMT256.rsp")
-    def test_MMT_256_encrypt(self, key, iv, plaintext, ciphertext):
+    @parameterize_encrypt_test("AES", "MMT", [
+        "CBCMMT128.rsp",
+        "CBCMMT192.rsp",
+        "CBCMMT256.rsp",
+    ])
+    def test_MMT(self, key, iv, plaintext, ciphertext):
         cipher = BlockCipher(
             ciphers.AES(binascii.unhexlify(key)),
             modes.CBC(binascii.unhexlify(iv)),
