address review comments
diff --git a/docs/hazmat/primitives/asymmetric/rsa.rst b/docs/hazmat/primitives/asymmetric/rsa.rst
index 66bb37c..ab2fe4e 100644
--- a/docs/hazmat/primitives/asymmetric/rsa.rst
+++ b/docs/hazmat/primitives/asymmetric/rsa.rst
@@ -93,8 +93,9 @@
 
     >>> from cryptography.hazmat.primitives import serialization
     >>> pem = private_key.dump(
-    ...    serialization.PKCS8(serialization.Encoding.PEM),
-    ...    serialization.BestAvailable(b'passwordgoeshere')
+    ...    encoding=serialization.Encoding.PEM,
+    ...    fmt=serialization.Format.PKCS8,
+    ...    encryption_type=serialization.BestAvailableEncryption(b'mypassword')
     ... )
     >>> pem.splitlines()[0]
     '-----BEGIN ENCRYPTED PRIVATE KEY-----'
@@ -105,8 +106,9 @@
 .. doctest::
 
     >>> pem = private_key.dump(
-    ...    serialization.TraditionalOpenSSL(serialization.Encoding.PEM),
-    ...    serialization.NoEncryption()
+    ...    encoding=serialization.Encoding.PEM,
+    ...    fmt=serialization.Format.PKCS8,
+    ...    encryption_type=serialization.NoEncryption()
     ... )
     >>> pem.splitlines()[0]
     '-----BEGIN RSA PRIVATE KEY-----'
@@ -532,13 +534,15 @@
             :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers`
             instance.
 
-    .. method:: dump(serializer, encryption_type)
+    .. method:: dump(encoding, fmt, encryption_type)
 
         Dump the key to PEM encoded bytes using the serializer provided.
 
-        :param serializer: An instance of
-            :class:`~cryptography.hazmat.primitives.serialization.TraditionalOpenSSL`
-            or :class:`~cryptography.hazmat.primitives.serialization.PKCS8`
+        :param encoding: A value from the
+            :class:`~cryptography.hazmat.primitives.serialization.Encoding` enum.
+
+        :param fmt: A value from the
+            :class:`~cryptography.hazmat.primitives.serialization.Format` enum.
 
         :param encryption_type: An instance of an object conforming to the
             :class:`~cryptography.hazmat.primitives.serialization.KeySerializationEncryption`
diff --git a/docs/hazmat/primitives/asymmetric/serialization.rst b/docs/hazmat/primitives/asymmetric/serialization.rst
index 68eaf02..b429766 100644
--- a/docs/hazmat/primitives/asymmetric/serialization.rst
+++ b/docs/hazmat/primitives/asymmetric/serialization.rst
@@ -75,12 +75,12 @@
     .. doctest::
 
         >>> from cryptography.hazmat.backends import default_backend
-        >>> from cryptography.hazmat.primitives.asymmetric import dsa, rsa
+        >>> from cryptography.hazmat.primitives.asymmetric import rsa
         >>> from cryptography.hazmat.primitives.serialization import load_pem_private_key
         >>> key = load_pem_private_key(pem_data, password=None, backend=default_backend())
         >>> if isinstance(key, rsa.RSAPrivateKey):
         ...     signature = sign_with_rsa_key(key, message)
-        ... elif isinstance(key, dsa.DSAPrivateKey):
+        ... elif isinstance(key, interfaces.DSAPrivateKey):
         ...     signature = sign_with_dsa_key(key, message)
         ... else:
         ...     raise TypeError
@@ -283,30 +283,37 @@
     :raises cryptography.exceptions.UnsupportedAlgorithm: If the serialized
         key is of a type that is not supported.
 
-Serializers
-~~~~~~~~~~~
+Serialization Formats
+~~~~~~~~~~~~~~~~~~~~~
 
-Instances of these classes can be passed to methods like
-:meth:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKeyWithSerialization.dump`.
-
-.. class:: PKCS8(encoding)
+.. class:: Format
 
     .. versionadded:: 0.8
 
-    A serializer for the PKCS #8 format.
+    An enumeration for key formats.
 
-    :param encoding: A value from the
-        :class:`~cryptography.hazmat.primitives.serialization.Encoding` enum.
+    .. attribute:: TraditionalOpenSSL
 
-.. class:: TraditionalOpenSSL(encoding)
+        Frequently known as PKCS#1 format.
+
+    .. attribute:: PKCS8
+
+Serialization Encodings
+~~~~~~~~~~~~~~~~~~~~~~~
+
+.. class:: Encoding
 
     .. versionadded:: 0.8
 
-    A serializer for the traditional OpenSSL (sometimes known as PKCS #1)
-    format.
+    An enumeration for encoding types.
 
-    :param encoding: A value from the
-        :class:`~cryptography.hazmat.primitives.serialization.Encoding` enum.
+    .. attribute:: PEM
+
+        For PEM format. This is a base64 format with delimiters.
+
+    .. attribute:: DER
+
+        For DER format. This is a binary format.
 
 
 Serialization Encryption Types
@@ -320,7 +327,7 @@
     All other classes in this section represent the available choices for
     encryption and have this interface.
 
-.. class:: BestAvailable
+.. class:: BestAvailableEncryption(password)
 
     Encrypt using the best available encryption for a given key's backend.
     This is a curated encryption choice and the algorithm may change over
@@ -331,22 +338,3 @@
 .. class:: NoEncryption
 
     Do not encrypt.
-
-
-Utility Classes
-~~~~~~~~~~~~~~~
-
-.. class:: Encoding
-
-    .. versionadded:: 0.8
-
-    An enumeration for encoding types. Used by :class:`PKCS8` and
-    :class:`TraditionalOpenSSL`.
-
-    .. attribute:: PEM
-
-        For PEM format. This is a base64 format with delimiters.
-
-    .. attribute:: DER
-
-        For DER format. This is a binary format.
diff --git a/src/cryptography/hazmat/backends/openssl/rsa.py b/src/cryptography/hazmat/backends/openssl/rsa.py
index 1357889..efc1a57 100644
--- a/src/cryptography/hazmat/backends/openssl/rsa.py
+++ b/src/cryptography/hazmat/backends/openssl/rsa.py
@@ -22,8 +22,8 @@
     RSAPublicKeyWithNumbers
 )
 from cryptography.hazmat.primitives.serialization import (
-    BestAvailable, Encoding, KeySerializationEncryption, NoEncryption, PKCS8,
-    TraditionalOpenSSL
+    BestAvailableEncryption, Encoding, Format, KeySerializationEncryption,
+    NoEncryption
 )
 
 
@@ -565,18 +565,23 @@
             )
         )
 
-    def dump(self, serializer, encryption_algorithm):
-        if isinstance(serializer, PKCS8):
+    def dump(self, encoding, fmt, encryption_algorithm):
+        if not isinstance(encoding, Encoding):
+            raise TypeError("encoding must be an item from the Encoding enum")
+
+        if not isinstance(fmt, Format):
+            raise TypeError("format must be an item from the Format enum")
+
+        # This is a temporary check until we land DER serialization.
+        if encoding != Encoding.PEM:
+            raise ValueError("Only PEM encoding is supported by this backend")
+
+        if fmt == Format.PKCS8:
             write_bio = self._backend._lib.PEM_write_bio_PKCS8PrivateKey
             key = self._evp_pkey
-        elif isinstance(serializer, TraditionalOpenSSL):
+        elif fmt == Format.TraditionalOpenSSL:
             write_bio = self._backend._lib.PEM_write_bio_RSAPrivateKey
             key = self._rsa_cdata
-        else:
-            raise TypeError("serializer must be PKCS8 or TraditionalOpenSSL")
-
-        if serializer.encoding != Encoding.PEM:
-            raise ValueError("Only PEM encoding is supported by this backend")
 
         if not isinstance(encryption_algorithm, KeySerializationEncryption):
             raise TypeError(
@@ -588,7 +593,7 @@
             password = b""
             passlen = 0
             evp_cipher = self._backend._ffi.NULL
-        elif isinstance(encryption_algorithm, BestAvailable):
+        elif isinstance(encryption_algorithm, BestAvailableEncryption):
             # This is a curated value that we will update over time.
             evp_cipher = self._backend._lib.EVP_get_cipherbyname(
                 b"aes-256-cbc"
diff --git a/src/cryptography/hazmat/primitives/asymmetric/rsa.py b/src/cryptography/hazmat/primitives/asymmetric/rsa.py
index e994a9c..918717f 100644
--- a/src/cryptography/hazmat/primitives/asymmetric/rsa.py
+++ b/src/cryptography/hazmat/primitives/asymmetric/rsa.py
@@ -50,14 +50,21 @@
         """
 
     @abc.abstractmethod
-    def dump(self, serializer, encryption_algorithm):
+    def dump(self, encoding, fmt, encryption_algorithm):
         """
-        Returns the PEM encoded key.
+        Returns the dumped key.
         """
 
 
-# DeprecatedIn08
-RSAPrivateKeyWithNumbers = RSAPrivateKeyWithSerialization
+RSAPrivateKeyWithNumbers = utils.deprecated(
+    RSAPrivateKeyWithSerialization,
+    __name__,
+    (
+        "The RSAPrivateKeyWithNumbers interface has been renamed to "
+        "RSAPrivateKeyWithSerialization"
+    ),
+    utils.DeprecatedIn08
+)
 
 
 @six.add_metaclass(abc.ABCMeta)
diff --git a/src/cryptography/hazmat/primitives/interfaces/__init__.py b/src/cryptography/hazmat/primitives/interfaces/__init__.py
index 6b4241b..f9ffae0 100644
--- a/src/cryptography/hazmat/primitives/interfaces/__init__.py
+++ b/src/cryptography/hazmat/primitives/interfaces/__init__.py
@@ -289,11 +289,12 @@
 )
 
 RSAPrivateKeyWithNumbers = utils.deprecated(
-    rsa.RSAPrivateKeyWithNumbers,
+    rsa.RSAPrivateKeyWithSerialization,
     __name__,
     (
         "The RSAPrivateKeyWithNumbers interface has moved to the "
-        "cryptography.hazmat.primitives.asymmetric.rsa module"
+        "cryptography.hazmat.primitives.asymmetric.rsa module and has been "
+        "renamed RSAPrivateKeyWithSerialization"
     ),
     utils.DeprecatedIn08
 )
diff --git a/src/cryptography/hazmat/primitives/serialization.py b/src/cryptography/hazmat/primitives/serialization.py
index 9bfbc6b..0d56422 100644
--- a/src/cryptography/hazmat/primitives/serialization.py
+++ b/src/cryptography/hazmat/primitives/serialization.py
@@ -174,24 +174,9 @@
     DER = "DER"
 
 
-class PKCS8(object):
-    def __init__(self, encoding):
-        if not isinstance(encoding, Encoding):
-            raise TypeError(
-                "Encoding must be an element from the Encoding enum"
-            )
-
-        self.encoding = encoding
-
-
-class TraditionalOpenSSL(object):
-    def __init__(self, encoding):
-        if not isinstance(encoding, Encoding):
-            raise TypeError(
-                "Encoding must be an element from the Encoding enum"
-            )
-
-        self.encoding = encoding
+class Format(Enum):
+    PKCS8 = "PKCS8"
+    TraditionalOpenSSL = "TraditionalOpenSSL"
 
 
 @six.add_metaclass(abc.ABCMeta)
@@ -200,7 +185,7 @@
 
 
 @utils.register_interface(KeySerializationEncryption)
-class BestAvailable(object):
+class BestAvailableEncryption(object):
     def __init__(self, password):
         if not isinstance(password, bytes) or len(password) == 0:
             raise ValueError("Password must be 1 or more bytes.")
diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py
index 77b6d25..78dcc1c 100644
--- a/src/cryptography/utils.py
+++ b/src/cryptography/utils.py
@@ -12,7 +12,6 @@
 
 # DeprecatedIn07 objects exist. This comment exists to remind developers to
 # look for them when it's time for the ninth release cycle deprecation dance.
-# DeprecatedIn08 objects also exist.
 
 DeprecatedIn08 = PendingDeprecationWarning
 
diff --git a/tests/hazmat/backends/test_openssl.py b/tests/hazmat/backends/test_openssl.py
index 35b7c5c..b5de702 100644
--- a/tests/hazmat/backends/test_openssl.py
+++ b/tests/hazmat/backends/test_openssl.py
@@ -503,18 +503,16 @@
         key = RSA_KEY_2048.private_key(backend)
         with pytest.raises(ValueError):
             key.dump(
-                serialization.PKCS8(
-                    serialization.Encoding.PEM
-                ),
-                serialization.BestAvailable(password)
+                serialization.Encoding.PEM,
+                serialization.Format.PKCS8,
+                serialization.BestAvailableEncryption(password)
             )
 
     def test_unsupported_key_encoding(self):
         key = RSA_KEY_2048.private_key(backend)
         with pytest.raises(ValueError):
             key.dump(
-                serialization.PKCS8(
-                    serialization.Encoding.DER
-                ),
+                serialization.Encoding.DER,
+                serialization.Format.PKCS8,
                 serialization.NoEncryption()
             )
diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py
index 72bc08a..a0df2f2 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -1750,9 +1750,12 @@
 @pytest.mark.requires_backend_interface(interface=PEMSerializationBackend)
 class TestRSAPEMWriter(object):
     @pytest.mark.parametrize(
-        ("serializer", "password"),
+        ("fmt", "password"),
         itertools.product(
-            [serialization.TraditionalOpenSSL, serialization.PKCS8],
+            [
+                serialization.Format.TraditionalOpenSSL,
+                serialization.Format.PKCS8
+            ],
             [
                 b"s",
                 b"longerpassword",
@@ -1761,12 +1764,13 @@
             ]
         )
     )
-    def test_dump_encrypted_pem(self, backend, serializer, password):
+    def test_dump_encrypted_pem(self, backend, fmt, password):
         key = RSA_KEY_2048.private_key(backend)
         _skip_if_no_serialization(key, backend)
         serialized = key.dump(
-            serializer(serialization.Encoding.PEM),
-            serialization.BestAvailable(password)
+            serialization.Encoding.PEM,
+            fmt,
+            serialization.BestAvailableEncryption(password)
         )
         loaded_key = serialization.load_pem_private_key(
             serialized, password, backend
@@ -1776,14 +1780,15 @@
         assert loaded_priv_num == priv_num
 
     @pytest.mark.parametrize(
-        "serializer",
-        (serialization.TraditionalOpenSSL, serialization.PKCS8),
+        "fmt",
+        (serialization.Format.TraditionalOpenSSL, serialization.Format.PKCS8),
     )
-    def test_dump_unencrypted_pem(self, backend, serializer):
+    def test_dump_unencrypted_pem(self, backend, fmt):
         key = RSA_KEY_2048.private_key(backend)
         _skip_if_no_serialization(key, backend)
         serialized = key.dump(
-            serializer(serialization.Encoding.PEM),
+            serialization.Encoding.PEM,
+            fmt,
             serialization.NoEncryption()
         )
         loaded_key = serialization.load_pem_private_key(
@@ -1793,20 +1798,33 @@
         priv_num = key.private_numbers()
         assert loaded_priv_num == priv_num
 
-    def test_dump_invalid_serializer(self, backend):
+    def test_dump_invalid_encoding(self, backend):
         key = RSA_KEY_2048.private_key(backend)
         _skip_if_no_serialization(key, backend)
         with pytest.raises(TypeError):
-            key.dump("notaserializer", serialization.NoEncryption())
+            key.dump(
+                "notencoding",
+                serialization.Format.PKCS8,
+                serialization.NoEncryption()
+            )
+
+    def test_dump_invalid_format(self, backend):
+        key = RSA_KEY_2048.private_key(backend)
+        _skip_if_no_serialization(key, backend)
+        with pytest.raises(TypeError):
+            key.dump(
+                serialization.Encoding.PEM,
+                "invalidformat",
+                serialization.NoEncryption()
+            )
 
     def test_dump_invalid_encryption_algorithm(self, backend):
         key = RSA_KEY_2048.private_key(backend)
         _skip_if_no_serialization(key, backend)
         with pytest.raises(TypeError):
             key.dump(
-                serialization.TraditionalOpenSSL(
-                    serialization.Encoding.PEM
-                ),
+                serialization.Encoding.PEM,
+                serialization.Format.TraditionalOpenSSL,
                 "notanencalg"
             )
 
@@ -1815,8 +1833,7 @@
         _skip_if_no_serialization(key, backend)
         with pytest.raises(ValueError):
             key.dump(
-                serialization.TraditionalOpenSSL(
-                    serialization.Encoding.PEM
-                ),
+                serialization.Encoding.PEM,
+                serialization.Format.TraditionalOpenSSL,
                 DummyKeyEncryption()
             )
diff --git a/tests/hazmat/primitives/test_serialization.py b/tests/hazmat/primitives/test_serialization.py
index 2a5fb21..fc8f866 100644
--- a/tests/hazmat/primitives/test_serialization.py
+++ b/tests/hazmat/primitives/test_serialization.py
@@ -18,9 +18,8 @@
 )
 from cryptography.hazmat.primitives.asymmetric import dsa, ec, rsa
 from cryptography.hazmat.primitives.serialization import (
-    BestAvailable, Encoding, PKCS8, TraditionalOpenSSL, load_der_private_key,
-    load_der_public_key, load_pem_private_key, load_pem_public_key,
-    load_ssh_public_key
+    BestAvailableEncryption, load_der_private_key, load_der_public_key,
+    load_pem_private_key, load_pem_public_key, load_ssh_public_key
 )
 
 
@@ -1162,25 +1161,11 @@
             load_ssh_public_key(ssh_key, backend)
 
 
-@pytest.mark.parametrize(
-    "serializer",
-    [PKCS8, TraditionalOpenSSL]
-)
-class TestSerializers(object):
-    def test_invalid_encoding(self, serializer):
-        with pytest.raises(TypeError):
-            serializer("thing")
-
-    def test_valid_params(self, serializer):
-        fmt = serializer(Encoding.PEM)
-        assert isinstance(fmt, (PKCS8, TraditionalOpenSSL))
-
-
 class TestKeySerializationEncryptionTypes(object):
     def test_non_bytes_password(self):
         with pytest.raises(ValueError):
-            BestAvailable(object())
+            BestAvailableEncryption(object())
 
     def test_encryption_with_zero_length_password(self):
         with pytest.raises(ValueError):
-            BestAvailable(b"")
+            BestAvailableEncryption(b"")