diff --git a/cryptography/primitives/__init__.py b/cryptography/primitives/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/cryptography/primitives/__init__.py
diff --git a/cryptography/primitives/block/__init__.py b/cryptography/primitives/block/__init__.py
new file mode 100644
index 0000000..e49fcf3
--- /dev/null
+++ b/cryptography/primitives/block/__init__.py
@@ -0,0 +1,6 @@
+from cryptography.primitives.block.base import BlockCipher
+
+
+__all__ = [
+    "BlockCipher",
+]
diff --git a/cryptography/primitives/block/base.py b/cryptography/primitives/block/base.py
new file mode 100644
index 0000000..c2cc432
--- /dev/null
+++ b/cryptography/primitives/block/base.py
@@ -0,0 +1,8 @@
+class BlockCipher(object):
+    def __init__(self, cipher, mode):
+        super(BlockCipher, self).__init__()
+        self.cipher = cipher
+        self.mode = mode
+
+    def encrypt(self, plaintext):
+        raise NotImplementedError
diff --git a/cryptography/primitives/block/ciphers.py b/cryptography/primitives/block/ciphers.py
new file mode 100644
index 0000000..e4e570d
--- /dev/null
+++ b/cryptography/primitives/block/ciphers.py
@@ -0,0 +1,4 @@
+class AES(object):
+    def __init__(self, key):
+        super(AES, self).__init__()
+        self.key = key
diff --git a/cryptography/primitives/block/modes.py b/cryptography/primitives/block/modes.py
new file mode 100644
index 0000000..d336ed3
--- /dev/null
+++ b/cryptography/primitives/block/modes.py
@@ -0,0 +1,5 @@
+class CBC(object):
+    def __init__(self, initialization_vector, padding):
+        super(CBC, self).__init__()
+        self.initialization_vector = initialization_vector
+        self.padding = padding
diff --git a/cryptography/primitives/block/padding.py b/cryptography/primitives/block/padding.py
new file mode 100644
index 0000000..6708349
--- /dev/null
+++ b/cryptography/primitives/block/padding.py
@@ -0,0 +1,2 @@
+class NoPadding(object):
+    pass
diff --git a/docs/primitives/symmetric-encryption.rst b/docs/primitives/symmetric-encryption.rst
index fe074f3..29eb282 100644
--- a/docs/primitives/symmetric-encryption.rst
+++ b/docs/primitives/symmetric-encryption.rst
@@ -12,7 +12,7 @@
 
     .. code-block:: pycon
 
-        >>> from cryptography.primitives.block import BlockCipher, cipher, mode, padding
+        >>> from cryptography.primitives.block import BlockCipher, ciphers, modes, padding
         >>> cipher = BlockCipher(cipher.AES(key), mode.CBC(iv, padding.PKCS7()))
         >>> cipher.encrypt("my secret message") + cipher.finalize()
         # The ciphertext
@@ -36,7 +36,7 @@
 Ciphers
 ~~~~~~~
 
-.. class:: cryptography.primitives.block.cipher.AES(key)
+.. class:: cryptography.primitives.block.ciphers.AES(key)
 
     AES (Advanced Encryption Standard) is a block cipher standardized by NIST.
     AES is both fast, and cryptographically strong. It is a good default
@@ -49,7 +49,7 @@
 Modes
 ~~~~~
 
-.. class:: cryptography.primitives.block.mode.CBC(initialization_vector, padding)
+.. class:: cryptography.primitives.block.modes.CBC(initialization_vector, padding)
 
     CBC (Cipher block chaining) is a mode of operation for block ciphers. It is
     considered cryptographically strong.
diff --git a/tests/primitives/test_block.py b/tests/primitives/test_block.py
new file mode 100644
index 0000000..e22d05e
--- /dev/null
+++ b/tests/primitives/test_block.py
@@ -0,0 +1,23 @@
+import binascii
+
+import pytest
+
+from cryptography.primitives.block import BlockCipher, ciphers, modes, padding
+
+
+class TestBlockCipher(object):
+    @pytest.mark.parametrize(("key", "iv", "plaintext", "ciphertext"), [
+        (
+            b"9dc2c84a37850c11699818605f47958c",
+            b"256953b2feab2a04ae0180d8335bbed6",
+            b"2e586692e647f5028ec6fa47a55a2aab",
+            b"1b1ebd1fc45ec43037fd4844241a437f"
+        ),
+    ])
+    def test_aes_cbc_nopadding(self, key, iv, plaintext, ciphertext):
+        cipher = BlockCipher(
+            ciphers.AES(binascii.unhexlify(key)),
+            modes.CBC(binascii.unhexlify(iv), padding.NoPadding())
+        )
+        actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize()
+        assert binascii.hexlify(actual_ciphertext) == ciphertext
