diff --git a/Lib/decimal.py b/Lib/decimal.py
index a5176e6..a66beef 100644
--- a/Lib/decimal.py
+++ b/Lib/decimal.py
@@ -130,9 +130,6 @@
     'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING',
     'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN',
 
-    # helper for context management
-    'ContextManager',
-
     # Functions for manipulating contexts
     'setcontext', 'getcontext', 'localcontext'
 ]
@@ -501,8 +498,8 @@
     >>> print getcontext().prec
     28
     """
-    if ctx is None: ctx = getcontext().copy()
-    return ContextManager(ctx.copy())
+    if ctx is None: ctx = getcontext()
+    return _ContextManager(ctx)
 
 
 ##### Decimal class ###########################################
@@ -2219,30 +2216,14 @@
 
 del name, val, globalname, rounding_functions
 
-class ContextManager(object):
+class _ContextManager(object):
     """Context manager class to support localcontext().
 
-      Sets the supplied context in __enter__() and restores
+      Sets a copy of the supplied context in __enter__() and restores
       the previous decimal context in __exit__()
-
-    """
-    # The below can't be included in the docstring until Python 2.6
-    # as the doctest module doesn't understand __future__ statements
-    """
-    Sample usage:
-    >>> from __future__ import with_statement
-    >>> print getcontext().prec
-    28
-    >>> ctx = Context(prec=15)
-    >>> with ContextManager(ctx):
-    ...     print getcontext().prec
-    ...
-    15
-    >>> print getcontext().prec
-    28
     """
     def __init__(self, new_context):
-        self.new_context = new_context
+        self.new_context = new_context.copy()
     def __enter__(self):
         self.saved_context = getcontext()
         setcontext(self.new_context)
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 6e7faf5..841ea6f 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -1068,20 +1068,9 @@
 class WithStatementTest(unittest.TestCase):
     # Can't do these as docstrings until Python 2.6
     # as doctest can't handle __future__ statements
-    def test_ContextManager(self):
-        # The basic context manager uses the supplied context
-        # without making a copy of it
-        orig_ctx = getcontext()
-        new_ctx = Context()
-        with ContextManager(new_ctx) as enter_ctx:
-            set_ctx = getcontext()
-        final_ctx = getcontext()
-        self.assert_(orig_ctx is final_ctx, 'did not restore context correctly')
-        self.assert_(new_ctx is set_ctx, 'did not set correct context')
-        self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context')
 
     def test_localcontext(self):
-        # The helper function makes a copy of the supplied context
+        # Use a copy of the current context in the block
         orig_ctx = getcontext()
         with localcontext() as enter_ctx:
             set_ctx = getcontext()
@@ -1091,7 +1080,7 @@
         self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context')
 
     def test_localcontextarg(self):
-        # The helper function makes a copy of the supplied context
+        # Use a copy of the supplied context in the block
         orig_ctx = getcontext()
         new_ctx = Context(prec=42)
         with localcontext(new_ctx) as enter_ctx:
