diff --git a/CHANGELOG.md b/CHANGELOG.md
index f74d876b530dc304b8f2a2ba951eaea13b057f2c..c8e20a2f7ee4d717404255625b31685fc681d945 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,8 @@
-# v2.25.10
+# v2.26.0
 
-* _TBA_
+* **breaking change**: DictObject will no longer announce it's presence via __str__ and __repr__. It will just display
+  it's dictionary.
+* nested creation of DictObject's was optimized
 
 # v2.25.9
 
diff --git a/satella/__init__.py b/satella/__init__.py
index f5c827dd1f560204193e14311c397ac7e3b8efdb..4e71e9adf0111fc0bcba9504862e4f48c9220f0e 100644
--- a/satella/__init__.py
+++ b/satella/__init__.py
@@ -1 +1 @@
-__version__ = '2.25.10a1'
+__version__ = '2.26.0'
diff --git a/satella/coding/structures/dictionaries/dict_object.py b/satella/coding/structures/dictionaries/dict_object.py
index 97578f7419d3f209404f9218de680dd9590e9693..38ef36636f961ee739530d16fa1b9686ed482f75 100644
--- a/satella/coding/structures/dictionaries/dict_object.py
+++ b/satella/coding/structures/dictionaries/dict_object.py
@@ -22,18 +22,19 @@ class DictObject(dict):
     >>> self.assertEqual(a['test'], 5)
     """
 
+    def __new__(cls, *args, **kwargs):
+        if not kwargs and len(args) == 1:
+            arg, = args
+            if isinstance(arg, DictObject):
+                return arg
+        return super().__new__(cls, *args, **kwargs)
+
     def __copy__(self):
         return DictObject(copy.copy(super()))
 
     def __deepcopy__(self, memo=None):
         return DictObject(copy.deepcopy(super(), memo=memo))
 
-    def __str__(self) -> str:
-        return 'DictObject(%s)' % (super().__str__(),)
-
-    def __repr__(self) -> str:
-        return 'DictObject(%s)' % (super().__repr__(),)
-
     @rethrow_as(KeyError, AttributeError)
     def __getattr__(self, item):
         return self[item]
diff --git a/tests/test_coding/test_structures.py b/tests/test_coding/test_structures.py
index bb01d1b3db6c4b74ece687bb5756eff63c057e51..4ab4517058fc25e3e019905dc5dd223042998674 100644
--- a/tests/test_coding/test_structures.py
+++ b/tests/test_coding/test_structures.py
@@ -503,6 +503,11 @@ class TestStructures(unittest.TestCase):
         self.assertEqual(cd[2], [])
         self.assertEqual(cd[2], [])
 
+    def test_new_dictobject(self):
+        a = DictObject(a=5, k=3)
+        b = DictObject(a)
+        self.assertIs(a, b)
+
     def test_dictobject_dictobject(self):
         a = DictObject(a=5, k=3)
         b = DictObject(a)
@@ -514,8 +519,6 @@ class TestStructures(unittest.TestCase):
         self.assertEqual(b.c, 4)
         self.assertEqual(b['c'], 4)
 
-        self.assertIn('DictObject', str(b))
-        self.assertIn('DictObject', repr(b))
         self.assertIn('a', b.keys())
         self.assertIn(5, b.values())
         self.assertIn(('a', 5), b.items())