refactor result classes and code which stores/loads results from storage
diff --git a/wally/main.py b/wally/main.py
index 0de6791..0553b4e 100644
--- a/wally/main.py
+++ b/wally/main.py
@@ -2,6 +2,7 @@
 import time
 import signal
 import pprint
+import getpass
 import logging
 import argparse
 import functools
@@ -98,6 +99,7 @@
     parser = argparse.ArgumentParser(prog='wally', description=descr)
     parser.add_argument("-l", '--log-level', help="print some extra log info")
     parser.add_argument("--ssh-key-passwd", default=None, help="Pass ssh key password")
+    parser.add_argument("--ssh-key-passwd-kbd", action="store_true", help="Enter ssh key password interactivelly")
     parser.add_argument("-s", '--settings-dir', default=None,
                         help="Folder to store key/settings/history files")
 
@@ -320,6 +322,8 @@
 
     if opts.ssh_key_passwd is not None:
         set_ssh_key_passwd(opts.ssh_key_passwd)
+    elif opts.ssh_key_passwd_kbd:
+        set_ssh_key_passwd(getpass.getpass("Ssh key password: ").strip())
 
     stages.sort(key=lambda x: x.priority)