diff --git a/Lib/datetime.py b/Lib/datetime.py
index d640f75..29ffe24 100644
--- a/Lib/datetime.py
+++ b/Lib/datetime.py
@@ -1784,24 +1784,31 @@
 
     # Sentinel value to disallow None
     _Omitted = object()
-    def __init__(self, offset, name=_Omitted):
-        if name is self._Omitted:
+    def __new__(cls, offset, name=_Omitted):
+        if not isinstance(offset, timedelta):
+            raise TypeError("offset must be a timedelta")
+        if name is cls._Omitted:
+            if not offset:
+                return cls.utc
             name = None
         elif not isinstance(name, str):
             raise TypeError("name must be a string")
-        if isinstance(offset, timedelta):
-            if self._minoffset <= offset <= self._maxoffset:
-                if (offset.microseconds != 0 or
-                    offset.seconds % 60 != 0):
-                    raise ValueError("offset must be whole"
-                                    " number of minutes")
-                self._offset = offset
-            else:
-                raise ValueError("offset out of range")
-        else:
-            raise TypeError("offset must be timedelta")
+        if not cls._minoffset <= offset <= cls._maxoffset:
+            raise ValueError("offset must be a timedelta"
+                             " strictly between -timedelta(hours=24) and"
+                             " timedelta(hours=24).")
+        if (offset.microseconds != 0 or
+            offset.seconds % 60 != 0):
+            raise ValueError("offset must be a timedelta"
+                             " representing a whole number of minutes")
+        return cls._create(offset, name)
 
+    @classmethod
+    def _create(cls, offset, name=None):
+        self = tzinfo.__new__(cls)
+        self._offset = offset
         self._name = name
+        return self
 
     def __getinitargs__(self):
         """pickle support"""
@@ -1879,9 +1886,9 @@
         minutes = rest // timedelta(minutes=1)
         return 'UTC{}{:02d}:{:02d}'.format(sign, hours, minutes)
 
-timezone.utc = timezone(timedelta(0))
-timezone.min = timezone(timezone._minoffset)
-timezone.max = timezone(timezone._maxoffset)
+timezone.utc = timezone._create(timedelta(0))
+timezone.min = timezone._create(timezone._minoffset)
+timezone.max = timezone._create(timezone._maxoffset)
 
 """
 Some time zone algebra.  For a datetime x, let
