Simplified the NIST tests and reduced duplication
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)),