diff --git a/CHANGELOG.md b/CHANGELOG.md
index 659be69dfdbd50e598793ae54a5313456c898ec3..340e41c1fbc76e718daf9249bcf7a8ded6b9101f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,2 +1,3 @@
 # v2.8.4
 
+* added `stringify_dict`
diff --git a/docs/coding/transforms.rst b/docs/coding/transforms.rst
new file mode 100644
index 0000000000000000000000000000000000000000..6350c3944145ceebb04f6c9a8be7ad75611a413a
--- /dev/null
+++ b/docs/coding/transforms.rst
@@ -0,0 +1,8 @@
+Rudimentary data transforms.
+
+stringify_dict
+==============
+
+Make both keys and values of this dict a string, by passing them through stringify function.
+
+.. autofunction:: satella.coding.transforms.stringify_dict
diff --git a/docs/index.rst b/docs/index.rst
index 28eff3ed499c849b8744e4609cdeff7e8dc95708..7e5d5ad88e9409d50773b26e23914317b19f2fe1 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -16,6 +16,7 @@ Visit the project's page at GitHub_!
            coding/structures
            coding/concurrent
            coding/sequences
+           coding/transforms
            instrumentation/traceback
            instrumentation/memory
            instrumentation/metrics
diff --git a/satella/__init__.py b/satella/__init__.py
index fc33c922b66c4faa3f91faef19f4b4a6d4ffcc55..ef59cc95ce70c26dc2b62692e3fd950ff39909a2 100644
--- a/satella/__init__.py
+++ b/satella/__init__.py
@@ -1 +1 @@
-__version__ = '2.8.4_a2'
+__version__ = '2.8.4_a3'
diff --git a/satella/coding/transforms/__init__.py b/satella/coding/transforms/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..883258174a9e0c7f79d4028644999582cae5dfa7
--- /dev/null
+++ b/satella/coding/transforms/__init__.py
@@ -0,0 +1,7 @@
+import typing as tp
+
+__all__ = ['stringify_dict']
+
+
+def stringify_dict(dct: dict, stringify: tp.Callable[[tp.Any], str]) -> tp.Dict[str, str]:
+    return {stringify(k): stringify(v) for k, v in dct.items()}
diff --git a/tests/test_coding/test_transforms.py b/tests/test_coding/test_transforms.py
new file mode 100644
index 0000000000000000000000000000000000000000..11b098cbf7cc6517d4ddae0038783577f8455f9e
--- /dev/null
+++ b/tests/test_coding/test_transforms.py
@@ -0,0 +1,8 @@
+import unittest
+from satella.coding.transforms import stringify_dict
+
+
+class MyTestCase(unittest.TestCase):
+    def test_stringify_dict(self):
+        dct = {1: 2, 3: 4, 5: 6}
+        self.assertEqual(stringify_dict(dct), {'1': '2', '3': '4', '5': '6'})