diff --git a/libcloud/common/base.py b/libcloud/common/base.py
index c8eca27..4cfcb2c 100644
--- a/libcloud/common/base.py
+++ b/libcloud/common/base.py
@@ -38,6 +38,7 @@ from libcloud.utils.py3 import b
 from libcloud.utils.misc import lowercase_keys
 from libcloud.utils.compression import decompress_data
 from libcloud.common.types import LibcloudError, MalformedResponseError
+from libcloud.common.types import ProviderError
 
 from libcloud.httplib_ssl import LibcloudHTTPSConnection
 
diff --git a/libcloud/common/types.py b/libcloud/common/types.py
index 2c31575..7b286c3 100644
--- a/libcloud/common/types.py
+++ b/libcloud/common/types.py
@@ -16,6 +16,7 @@
 __all__ = [
     "LibcloudError",
     "MalformedResponseError",
+    "ProviderError",
     "InvalidCredsError",
     "InvalidCredsException",
     "LazyList"
@@ -61,12 +62,19 @@ class MalformedResponseError(LibcloudError):
                 + repr(self.body))
 
 
-class InvalidCredsError(LibcloudError):
-    """Exception used when invalid credentials are used on a provider."""
+class ProviderError(LibcloudError):
+    """Exception used when provider gives back 
+    error response (HTTP 4xx, 5xx) for a request. 
+    
+    Specific sub types can be derieved for errors like
+    HTTP 401 : InvalidCredsError
+    HTTP 404 : NodeNotFoundError, ContainerDoesNotExistError
+    """
 
-    def __init__(self, value='Invalid credentials with the provider',
+    def __init__(self, value, http_code,
                  driver=None):
         self.value = value
+        self.http_code = http_code
         self.driver = driver
 
     def __str__(self):
@@ -76,6 +84,16 @@ class InvalidCredsError(LibcloudError):
         return repr(self.value)
 
 
+class InvalidCredsError(ProviderError):
+    """Exception used when invalid credentials are used on a provider."""
+
+    def __init__(self, value='Invalid credentials with the provider',
+                 driver=None):
+        super(InvalidCredsError, self).__init__(value, 
+                                                http_code=401,
+                                                driver=driver)
+
+
 # Deprecated alias of L{InvalidCredsError}
 InvalidCredsException = InvalidCredsError
 
