diff --git a/utils/build-galaxy-release.sh b/utils/build-galaxy-release.sh
index f6e55a9deccd49c873ee969c27d5f874eb37ccce..b94560e7753bf6b3b002ff58ff38629533a00b13 100644
--- a/utils/build-galaxy-release.sh
+++ b/utils/build-galaxy-release.sh
@@ -29,6 +29,14 @@ cd plugins/action_plugins && {
     cd ../..
 }
 
+for x in $(find plugins/modules -name "*.py" -print); do
+    python utils/galaxyfy-module-EXAMPLES.py "$x" "ipa" "$collection_prefix"
+done
+
+for x in $(find roles/*/library -name "*.py" -print); do
+    python utils/galaxyfy-module-EXAMPLES.py "$x" "ipa" "$collection_prefix"
+done
+
 for x in roles/*/tasks/*.yml; do
     python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
 done
@@ -37,6 +45,14 @@ for x in $(find playbooks -name "*.yml" -print); do
     python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
 done
 
+for x in $(find . -name "README*.md" -print); do
+    python utils/galaxyfy-README.py "$x" "ipa" "$collection_prefix"
+done
+
+for x in $(find tests -name "*.yml" -print); do
+    python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
+done
+
 #git diff
 
 ansible-galaxy collection build
diff --git a/utils/galaxyfy-README.py b/utils/galaxyfy-README.py
new file mode 100644
index 0000000000000000000000000000000000000000..daa45213281da2e23176fcc12ffc56ffd26e9f30
--- /dev/null
+++ b/utils/galaxyfy-README.py
@@ -0,0 +1,61 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Authors:
+#   Thomas Woerner <twoerner@redhat.com>
+#
+# Copyright (C) 2020 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import sys
+from galaxyfy import galaxyfy_playbook
+
+
+def readme(readme_in, project_prefix, collection_prefix):
+    out_lines = []
+
+    with open(readme_in) as in_f:
+        changed = False
+        code = False
+        code_lines = []
+        for line in in_f:
+            stripped = line.strip()
+            if stripped.startswith("```"):
+                if code:
+                    _out_lines, _changed = \
+                        galaxyfy_playbook(project_prefix, collection_prefix,
+                                          code_lines)
+                    out_lines.extend(_out_lines)
+                    code_lines = []
+                    if _changed:
+                        changed = True
+                    code = False
+                else:
+                    code = True
+                    out_lines.append(line)
+                    continue
+            if code:
+                code_lines.append(line)
+            else:
+                out_lines.append(line)
+
+    if changed:
+        with open(readme_in, "w") as out_f:
+            for line in out_lines:
+                out_f.write(line)
+
+
+readme(sys.argv[1], sys.argv[2], sys.argv[3])
diff --git a/utils/galaxyfy-module-EXAMPLES.py b/utils/galaxyfy-module-EXAMPLES.py
new file mode 100644
index 0000000000000000000000000000000000000000..31da3bb3b86359c85109aecc01844288505edc22
--- /dev/null
+++ b/utils/galaxyfy-module-EXAMPLES.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Authors:
+#   Thomas Woerner <twoerner@redhat.com>
+#
+# Copyright (C) 2020 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import sys
+from galaxyfy import galaxyfy_playbook
+
+
+def module_EXAMPLES(module_in, project_prefix, collection_prefix):
+    out_lines = []
+
+    with open(module_in) as in_f:
+        changed = False
+        example = False
+        example_lines = []
+        for line in in_f:
+            stripped = line.strip()
+            if stripped in ['EXAMPLES = """', "EXAMPLES = '''"]:
+                example = True
+                out_lines.append(line)
+                continue
+            elif example and stripped in ["'''", '"""']:
+                _out_lines, _changed = \
+                    galaxyfy_playbook(project_prefix, collection_prefix,
+                                      example_lines)
+                for _line in _out_lines:
+                    out_lines.append(_line)
+                example_lines = []
+                if _changed:
+                    changed = True
+                example = False
+                out_lines.append(line)
+                continue
+            if example:
+                example_lines.append(line)
+            else:
+                out_lines.append(line)
+
+    if changed:
+        with open(module_in, "w") as out_f:
+            for line in out_lines:
+                out_f.write(line)
+
+
+module_EXAMPLES(sys.argv[1], sys.argv[2], sys.argv[3])
diff --git a/utils/galaxyfy-playbook.py b/utils/galaxyfy-playbook.py
index 3810ba3c7a748396b79b9fc108759e32bd02dbeb..a0c51c9e8b28f6b4df49afcbd58c5f2258d6339f 100644
--- a/utils/galaxyfy-playbook.py
+++ b/utils/galaxyfy-playbook.py
@@ -1,45 +1,40 @@
-import sys
-import re
-
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Authors:
+#   Thomas Woerner <twoerner@redhat.com>
+#
+# Copyright (C) 2019,2020 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-def galaxify_playbook(playbook_in, project_prefix, collection_prefix):
-    p1 = re.compile('(%s.*:)$' % project_prefix)
-    p2 = re.compile('(.*:) (%s.*)$' % project_prefix)
-    lines = []
+import sys
+from galaxyfy import galaxyfy_playbook
 
-    pattern1 = r'%s.\1' % collection_prefix
-    pattern2 = r'\1 %s.\2' % collection_prefix
 
+def playbook(playbook_in, project_prefix, collection_prefix):
+    changed = False
     with open(playbook_in) as in_f:
-        changed = False
-        changeable = False
-        include_role = False
-        for line in in_f:
-            stripped = line.strip()
-            if stripped.startswith("- name:") or \
-               stripped.startswith("- block:"):
-                changeable = True
-            elif stripped in ["set_fact:", "vars:"]:
-                changeable = False
-                include_role = False
-            elif stripped.startswith("include_role:"):
-                include_role = True
-            elif include_role and stripped.startswith("name:"):
-                line = p2.sub(pattern2, line)
-                changed = True
-            elif changeable and stripped.startswith("- role:"):
-                line = p2.sub(pattern2, line)
-                changed = True
-            elif changeable and not stripped.startswith(collection_prefix):
-                line = p1.sub(pattern1, line)
-                changed = True
-
-            lines.append(line)
+        lines = in_f.readlines()
+        out_lines, changed = \
+            galaxyfy_playbook(project_prefix, collection_prefix, lines)
 
     if changed:
         with open(playbook_in, "w") as out_f:
-            for line in lines:
+            for line in out_lines:
                 out_f.write(line)
 
 
-galaxify_playbook(sys.argv[1], sys.argv[2], sys.argv[3])
+playbook(sys.argv[1], sys.argv[2], sys.argv[3])
diff --git a/utils/galaxyfy.py b/utils/galaxyfy.py
new file mode 100644
index 0000000000000000000000000000000000000000..57c0823e2d4506a9cf8e92540bcdebef332003ef
--- /dev/null
+++ b/utils/galaxyfy.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Authors:
+#   Thomas Woerner <twoerner@redhat.com>
+#
+# Copyright (C) 2019,2020 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import re
+
+
+def galaxyfy_playbook(project_prefix, collection_prefix, lines):
+    p1 = re.compile('(%s.*:)$' % project_prefix)
+    p2 = re.compile('(.*:) (%s.*)$' % project_prefix)
+    out_lines = []
+
+    pattern1 = r'%s.\1' % collection_prefix
+    pattern2 = r'\1 %s.\2' % collection_prefix
+
+    changed = False
+    changeable = False
+    include_role = False
+    for line in lines:
+        stripped = line.strip()
+        if stripped.startswith("- name:") or \
+           stripped.startswith("- block:"):
+            changeable = True
+        elif stripped in ["set_fact:", "vars:"]:
+            changeable = False
+            include_role = False
+        elif stripped.startswith("include_role:"):
+            include_role = True
+        elif include_role and stripped.startswith("name:"):
+            line = p2.sub(pattern2, line)
+            changed = True
+        elif changeable and stripped.startswith("- role:"):
+            line = p2.sub(pattern2, line)
+            changed = True
+        elif (changeable and stripped.startswith(project_prefix) and
+              not stripped.startswith(collection_prefix) and
+              stripped.endswith(":")):
+            line = p1.sub(pattern1, line)
+            changed = True
+            changeable = False  # Only change first line in task
+        elif (stripped.startswith("- %s" % project_prefix) and
+              stripped.endswith(":")):
+            line = p1.sub(pattern1, line)
+            changed = True
+
+        out_lines.append(line)
+
+    return (out_lines, changed)