diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index a42a4d1..b5c7ef8 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -14,6 +14,22 @@
   :class:`~cryptography.hazmat.primitives.hashes.HashContext` were moved from
   :mod:`~cryptography.hazmat.primitives.interfaces` to
   :mod:`~cryptography.hazmat.primitives.hashes`.
+* :class:`~cryptography.hazmat.primitives.ciphers.base.CipherContext`,
+  :class:`~cryptography.hazmat.primitives.ciphers.base.AEADCipherContext`,
+  :class:`~cryptography.hazmat.primitives.ciphers.base.AEADEncryptionContext`,
+  :class:`~cryptography.hazmat.primitives.ciphers.base.CipherAlgorithm`, and
+  :class:`~cryptography.hazmat.primitives.ciphers.base.BlockCipherAlgorithm`
+  were moved from :mod:`~cryptography.hazmat.primitives.interfaces` to
+  :mod:`~cryptography.hazmat.primitives.ciphers.base`.
+* :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode`,
+  :class:`~cryptography.hazmat.primitives.ciphers.modes.ModeWithInitializationVector`,
+  :class:`~cryptography.hazmat.primitives.ciphers.modes.ModeWithNonce`, and
+  :class:`~cryptography.hazmat.primitives.ciphers.modes.ModeWithAuthenticationTag`
+  were moved from :mod:`~cryptography.hazmat.primitives.interfaces` to
+  :mod:`~cryptography.hazmat.primitives.ciphers.modes`.
+* :class:`~cryptography.hazmat.primitives.padding.PaddingContext` was moved
+  from :mod:`~cryptography.hazmat.primitives.interfaces` to
+  :mod:`~cryptography.hazmat.primitives.padding`.
 * :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`,
   :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParametersWithNumbers`,
   :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`,
diff --git a/docs/hazmat/primitives/padding.rst b/docs/hazmat/primitives/padding.rst
index 0322f9d..203eb5b 100644
--- a/docs/hazmat/primitives/padding.rst
+++ b/docs/hazmat/primitives/padding.rst
@@ -44,18 +44,16 @@
     .. method:: padder()
 
         :returns: A padding
-            :class:`~cryptography.hazmat.primitives.interfaces.PaddingContext`
+            :class:`~cryptography.hazmat.primitives.padding.PaddingContext`
             provider.
 
     .. method:: unpadder()
 
         :returns: An unpadding
-            :class:`~cryptography.hazmat.primitives.interfaces.PaddingContext`
+            :class:`~cryptography.hazmat.primitives.padding.PaddingContext`
             provider.
 
 
-.. currentmodule:: cryptography.hazmat.primitives.interfaces
-
 .. class:: PaddingContext
 
     When calling ``padder()`` or ``unpadder()`` the result will conform to the
diff --git a/docs/hazmat/primitives/symmetric-encryption.rst b/docs/hazmat/primitives/symmetric-encryption.rst
index 5302301..0692f0f 100644
--- a/docs/hazmat/primitives/symmetric-encryption.rst
+++ b/docs/hazmat/primitives/symmetric-encryption.rst
@@ -591,6 +591,18 @@
         individual modes.
 
 
+.. class:: ModeWithAuthenticationTag
+
+    A cipher mode with an authentication tag.
+
+    .. attribute:: tag
+
+        :type: bytes
+
+        Exact requirements of the tag are described by the documentation of
+        individual modes.
+
+
 
 .. _`described by Colin Percival`: http://www.daemonology.net/blog/2009-06-11-cryptographic-right-answers.html
 .. _`recommends a 96-bit IV length`: http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf
diff --git a/src/cryptography/hazmat/primitives/interfaces/__init__.py b/src/cryptography/hazmat/primitives/interfaces/__init__.py
index e9ba780..52433e1 100644
--- a/src/cryptography/hazmat/primitives/interfaces/__init__.py
+++ b/src/cryptography/hazmat/primitives/interfaces/__init__.py
@@ -9,7 +9,7 @@
 import six
 
 from cryptography import utils
-from cryptography.hazmat.primitives import hashes
+from cryptography.hazmat.primitives import hashes, padding
 from cryptography.hazmat.primitives.asymmetric import dsa, ec, rsa
 from cryptography.hazmat.primitives.ciphers import base, modes
 
@@ -240,19 +240,15 @@
 )
 
 
-@six.add_metaclass(abc.ABCMeta)
-class PaddingContext(object):
-    @abc.abstractmethod
-    def update(self, data):
-        """
-        Pads the provided bytes and returns any available data as bytes.
-        """
-
-    @abc.abstractmethod
-    def finalize(self):
-        """
-        Finalize the padding, returns bytes.
-        """
+PaddingContext = utils.deprecated(
+    padding.PaddingContext,
+    __name__,
+    (
+        "The PaddingContext interface has moved to the "
+        "cryptography.hazmat.primitives.padding module"
+    ),
+    utils.DeprecatedIn08
+)
 
 
 HashContext = utils.deprecated(
diff --git a/src/cryptography/hazmat/primitives/padding.py b/src/cryptography/hazmat/primitives/padding.py
index 49cae9d..8ad64de 100644
--- a/src/cryptography/hazmat/primitives/padding.py
+++ b/src/cryptography/hazmat/primitives/padding.py
@@ -4,12 +4,13 @@
 
 from __future__ import absolute_import, division, print_function
 
+import abc
+
 import six
 
 from cryptography import utils
 from cryptography.exceptions import AlreadyFinalized
 from cryptography.hazmat.bindings.utils import LazyLibrary, build_ffi
-from cryptography.hazmat.primitives import interfaces
 
 
 TYPES = """
@@ -59,6 +60,21 @@
 _lib = LazyLibrary(_ffi)
 
 
+@six.add_metaclass(abc.ABCMeta)
+class PaddingContext(object):
+    @abc.abstractmethod
+    def update(self, data):
+        """
+        Pads the provided bytes and returns any available data as bytes.
+        """
+
+    @abc.abstractmethod
+    def finalize(self):
+        """
+        Finalize the padding, returns bytes.
+        """
+
+
 class PKCS7(object):
     def __init__(self, block_size):
         if not (0 <= block_size < 256):
@@ -76,7 +92,7 @@
         return _PKCS7UnpaddingContext(self.block_size)
 
 
-@utils.register_interface(interfaces.PaddingContext)
+@utils.register_interface(PaddingContext)
 class _PKCS7PaddingContext(object):
     def __init__(self, block_size):
         self.block_size = block_size
@@ -109,7 +125,7 @@
         return result
 
 
-@utils.register_interface(interfaces.PaddingContext)
+@utils.register_interface(PaddingContext)
 class _PKCS7UnpaddingContext(object):
     def __init__(self, block_size):
         self.block_size = block_size
