diff --git a/lib/gen_print.py b/lib/gen_print.py
index f0bc76d..b51b51e 100755
--- a/lib/gen_print.py
+++ b/lib/gen_print.py
@@ -769,6 +769,10 @@
     return 4
 
 
+def proxy_dict_type():
+    return 5
+
+
 def is_dict(var_value):
     r"""
     Return non-zero if var_value is a type of dictionary and 0 if it is not.
@@ -782,25 +786,29 @@
                                     type of dictionary.
     """
 
-    type_is_dict = 0
     if isinstance(var_value, dict):
-        type_is_dict = dict_type()
+        return dict_type()
     try:
         if isinstance(var_value, collections.OrderedDict):
-            type_is_dict = ordered_dict_type()
+            return ordered_dict_type()
     except AttributeError:
         pass
     try:
         if isinstance(var_value, DotDict):
-            type_is_dict = dot_dict_type()
+            return dot_dict_type()
     except NameError:
         pass
     try:
         if isinstance(var_value, NormalizedDict):
-            type_is_dict = normalized_dict_type()
+            return normalized_dict_type()
     except NameError:
         pass
-    return type_is_dict
+    try:
+        if str(type(var_value)).split("'")[1] == "dictproxy":
+            return proxy_dict_type()
+    except NameError:
+        pass
+    return 0
 
 
 def get_int_types():
@@ -1586,8 +1594,22 @@
         DISPLAY = os.environ['DISPLAY']
     except KeyError:
         DISPLAY = ""
-    buffer += sprint_var(DISPLAY, 0, indent,
-                         col1_width)
+    buffer += sprint_var(DISPLAY, 0, indent, col1_width)
+    PYTHON_VERSION = os.environ.get('PYTHON_VERSION', None)
+    if PYTHON_VERSION is not None:
+        buffer += sprint_var(PYTHON_VERSION)
+    PYTHON_PGM_PATH = os.environ.get('PYTHON_PGM_PATH', None)
+    if PYTHON_PGM_PATH is not None:
+        buffer += sprint_var(PYTHON_PGM_PATH)
+    python_version = sys.version.replace("\n", "")
+    buffer += sprint_var(python_version)
+    ROBOT_VERSION = os.environ.get('ROBOT_VERSION', None)
+    if ROBOT_VERSION is not None:
+        buffer += sprint_var(ROBOT_VERSION)
+    ROBOT_PGM_PATH = os.environ.get('ROBOT_PGM_PATH', None)
+    if ROBOT_PGM_PATH is not None:
+        buffer += sprint_var(ROBOT_PGM_PATH)
+
     # TODO: Add code to print caller's parms.
 
     # __builtin__.arg_obj is created by the get_arg module function,
