diff --git a/image_creator/dialog_main.py b/image_creator/dialog_main.py
index 614ad0b4705e81b2666777a88dc4397676cfcd6d..478c0f097bf27aaa173394aa85b2c4938d485590 100644
--- a/image_creator/dialog_main.py
+++ b/image_creator/dialog_main.py
@@ -181,6 +181,10 @@ def dialog_main(media, logfile, tmpdir, snapshot):
     dialog._common_args_syntax["no_label"] = \
         lambda string: ("--no-label", string)
 
+    # Add exit label overwriting
+    dialog._common_args_syntax["exit_label"] = \
+        lambda string: ("--exit-label", string)
+
     # Monkey-patch pythondialog to include support for form dialog boxes
     if not hasattr(dialog, 'form'):
         d.form = types.MethodType(_dialog_form, d)
diff --git a/image_creator/dialog_menu.py b/image_creator/dialog_menu.py
index 0f1f274a6e0cc9161db0b83a29dd9da9fe6b3181..49f2e07050f7d77de86df5fa7fb9536bd9e54951 100644
--- a/image_creator/dialog_menu.py
+++ b/image_creator/dialog_menu.py
@@ -201,7 +201,7 @@ def register_image(session):
                  "register it", width=SMALL_WIDTH)
         return False
 
-    name = ""
+    name = "" if 'registered' not in session else session['registered'].name
     description = image.meta['DESCRIPTION'] if 'DESCRIPTION' in image.meta \
         else ""
 
@@ -247,20 +247,23 @@ def register_image(session):
         out.append(gauge)
         try:
             try:
-                out.info("Registering %s image with the cloud ..." % img_type)
+                out.info("Registering %s image with the cloud ..." % img_type,
+                         False)
                 kamaki = Kamaki(session['account'], out)
-                result = kamaki.register(name, session['pithos_uri'], metadata,
-                                         is_public)
+                session['registered'] = kamaki.register(
+                    name, session['pithos_uri'], metadata, is_public)
                 out.success('done')
+
                 # Upload metadata file
-                out.info("Uploading metadata file ...")
-                metastring = unicode(json.dumps(result, ensure_ascii=False))
+                out.info("Uploading metadata file ...", False)
+                metastring = unicode(json.dumps(session['registered'],
+                                                indent=4, ensure_ascii=False))
                 kamaki.upload(StringIO.StringIO(metastring),
                               size=len(metastring),
                               remote_path="%s.meta" % session['upload'])
                 out.success("done")
                 if is_public:
-                    out.info("Sharing metadata and md5sum files ...")
+                    out.info("Sharing metadata and md5sum files ...", False)
                     kamaki.share("%s.meta" % session['upload'])
                     kamaki.share("%s.md5sum" % session['upload'])
                     out.success('done')
@@ -352,7 +355,13 @@ def delete_clouds(session):
 def kamaki_menu(session):
     """Show kamaki related actions"""
     d = session['dialog']
-    default_item = "Cloud"
+
+    if 'registered' in session:
+        default_item = "Info"
+    elif 'upload' in session:
+        default_item = "Register"
+    else:
+        default_item = "Upload"
 
     if 'cloud' not in session:
         cloud = Kamaki.get_default_cloud_name()
@@ -377,11 +386,14 @@ def kamaki_menu(session):
         if 'upload' in session:
             choices.append(("Register", "Register image with the cloud: %s"
                             % session['upload']))
+        if 'registered' in session:
+            choices.append(("Info", "Show registration info for \"%s\"" %
+                                    session['registered']['name']))
 
         (code, choice) = d.menu(
             text="Choose one of the following or press <Back> to go back.",
-            width=WIDTH, choices=choices, cancel="Back", height=13,
-            menu_height=5, default_item=default_item,
+            width=WIDTH, choices=choices, cancel="Back", height=8+len(choices),
+            menu_height=len(choices), default_item=default_item,
             title="Image Registration Menu")
 
         if code in (d.DIALOG_CANCEL, d.DIALOG_ESC):
@@ -444,9 +456,45 @@ def kamaki_menu(session):
                 default_item = "Upload"
         elif choice == "Register":
             if register_image(session):
-                return True
+                default_item = "Info"
             else:
                 default_item = "Register"
+        elif choice == "Info":
+            show_info(session)
+
+
+def show_info(session):
+    """Show registration info"""
+
+    assert 'registered' in session
+    info = json.dumps(session['registered'], ensure_ascii=False, indent=4)
+
+    d = session['dialog']
+
+    while 1:
+        code = d.scrollbox(info, width=WIDTH, title="Registration info",
+                           extra_label="Save", extra_button=1,
+                           exit_label="Close")
+        if code == d.DIALOG_EXTRA:
+            path = select_file(d, title="Save registration information as...")
+            if path is None:
+                break
+            if os.path.isdir(path):
+                continue
+
+            if os.path.exists(path):
+                if d.yesno("File: `%s' already exists. Do you want to "
+                           "overwrite it?" % path, width=WIDTH, defaultno=1):
+                    continue
+
+            with open(path, 'w') as f:
+                f.write(info + '\n')
+
+            d.msgbox("File `%s was successfully written." % path,
+                     width=SMALL_WIDTH)
+            break
+        else:
+            return
 
 
 def add_property(session):