Added entry_points.
diff --git a/cryptography/hazmat/backends/__init__.py b/cryptography/hazmat/backends/__init__.py
index ae78822..663d1f5 100644
--- a/cryptography/hazmat/backends/__init__.py
+++ b/cryptography/hazmat/backends/__init__.py
@@ -13,13 +13,9 @@
 
 from __future__ import absolute_import, division, print_function
 
+import pkg_resources
+
 from cryptography.hazmat.backends.multibackend import MultiBackend
-from cryptography.hazmat.bindings.commoncrypto.binding import (
-    Binding as CommonCryptoBinding
-)
-from cryptography.hazmat.bindings.openssl.binding import (
-    Binding as OpenSSLBinding
-)
 
 
 _available_backends_list = None
@@ -31,17 +27,24 @@
     if _available_backends_list is None:
         _available_backends_list = []
 
-        if CommonCryptoBinding.is_available():
-            from cryptography.hazmat.backends import commoncrypto
-            _available_backends_list.append(commoncrypto.backend)
+        for backend in pkg_resources.iter_entry_points(
+            "cryptography.hazmat.backends"
+        ):
+            is_backend_available = pkg_resources.get_entry_info(
+                backend.dist,
+                "cryptography.hazmat.is_backend_available",
+                backend.name
+            )
 
-        if OpenSSLBinding.is_available():
-            from cryptography.hazmat.backends import openssl
-            _available_backends_list.append(openssl.backend)
+            if is_backend_available is not None:
+                is_backend_available = is_backend_available.load(require=False)
+                if not is_backend_available():
+                    continue
+
+            _available_backends_list.append(backend.load(require=False))
 
     return _available_backends_list
 
-
 _default_backend = None
 
 
diff --git a/setup.py b/setup.py
index f73394e..30146b7 100644
--- a/setup.py
+++ b/setup.py
@@ -32,13 +32,15 @@
     exec(f.read(), about)
 
 
+SETUPTOOLS_DEPENDENCY = "setuptools"
 CFFI_DEPENDENCY = "cffi>=0.8"
 SIX_DEPENDENCY = "six>=1.4.1"
 VECTORS_DEPENDENCY = "cryptography_vectors=={0}".format(about['__version__'])
 
 requirements = [
     CFFI_DEPENDENCY,
-    SIX_DEPENDENCY
+    SIX_DEPENDENCY,
+    SETUPTOOLS_DEPENDENCY
 ]
 
 # If you add a new dep here you probably need to add it in the tox.ini as well
@@ -173,5 +175,17 @@
         "build": CFFIBuild,
         "install": CFFIInstall,
         "test": PyTest,
+    },
+
+    entry_points={
+        "cryptography.hazmat.backends": [
+            "commoncrypto = cryptography.hazmat.backends.commoncrypto:backend",
+            "openssl = cryptography.hazmat.backends.openssl:backend"
+        ],
+
+        "cryptography.hazmat.is_backend_available": [
+            "commoncrypto = cryptography.hazmat.bindings.commoncrypto."
+            "binding:Binding.is_available"
+        ]
     }
 )