diff --git a/cli-runopts.c b/cli-runopts.c
index f8e289bf5fd9cb80ac2b20900e8b5cf4be030c67..5f36f7c5206430a493f0c41f2142c488bdfd6bc0 100644
--- a/cli-runopts.c
+++ b/cli-runopts.c
@@ -90,6 +90,7 @@ static void printhelp() {
 					"-c <cipher list> Specify preferred ciphers ('-c help' to list options)\n"
 					"-m <MAC list> Specify preferred MACs for packet verification (or '-m help')\n"
 #endif
+					"-V    Version\n"
 #ifdef DEBUG_TRACE
 					"-v    verbose (compiled with DEBUG_TRACE)\n"
 #endif
@@ -324,6 +325,10 @@ void cli_getopts(int argc, char ** argv) {
 #ifndef ENABLE_CLI_LOCALTCPFWD
 				case 'L':
 #endif
+				case 'V':
+					print_version();
+					exit(EXIT_SUCCESS);
+					break;
 				case 'o':
 				case 'b':
 					next = &dummy;
diff --git a/common-runopts.c b/common-runopts.c
index 699ebdaac9fa210f05abae25cdcaef1e8c87c598..cdac77e1cedd8359ff7638c0d420ac2ddcdee212 100644
--- a/common-runopts.c
+++ b/common-runopts.c
@@ -106,3 +106,8 @@ parse_ciphers_macs()
 }
 #endif
 
+void print_version(const char* name) {
+	fprintf(stderr, "Dropbear %s v%s\n", name, DROPBEAR_VERSION);
+}
+
+
diff --git a/dbclient.1 b/dbclient.1
index a6dff62bc855a4ed8b13c363fb48002a3a1cf943..4502b2374ff06f5c0c587be9f16530f52c526d48 100644
--- a/dbclient.1
+++ b/dbclient.1
@@ -19,8 +19,7 @@ dbclient \- lightweight SSH client
 
 .SH DESCRIPTION
 .B dbclient
-is a SSH client designed to be small enough to be used in small memory
-environments, while still being functional and secure enough for general use.
+is a small SSH client 
 .SH OPTIONS
 .TP
 .B \-p \fIport
@@ -98,7 +97,7 @@ Ensure that traffic is transmitted at a certain interval in seconds. This is
 useful for working around firewalls or routers that drop connections after
 a certain period of inactivity. The trade-off is that a session may be
 closed if there is a temporary lapse of network connectivity. A setting
-if 0 disables keepalives.
+if 0 disables keepalives. If no response is received for 3 consecutive keepalives the connection will be closed.
 .TP
 .B \-I \fIidle_timeout
 Disconnect the session if no traffic is transmitted or received for \fIidle_timeout\fR seconds.
@@ -121,6 +120,9 @@ Specify a comma separated list of authentication MACs to enable. Use \fI-m help\
 .TP
 .B \-s 
 The specified command will be requested as a subsystem, used for sftp. Dropbear doesn't implement sftp itself but the OpenSSH sftp client can be used eg \fIsftp -S dbclient user@host\fR
+.TP
+.B \-V
+Print the version
 
 .SH MULTI-HOP
 Dropbear will also allow multiple "hops" to be specified, separated by commas. In
diff --git a/dropbear.8 b/dropbear.8
index 032e4ce0f692f1aa09edc43842394794d5f92aa4..42f8ddb3508de3f12b27cb39a7828e720e9fd80f 100644
--- a/dropbear.8
+++ b/dropbear.8
@@ -10,8 +10,7 @@ dropbear \- lightweight SSH server
 .IR [address:]port ]
 .SH DESCRIPTION
 .B dropbear
-is a SSH server designed to be small enough to be used in small memory
-environments, while still being functional and secure enough for general use.
+is a small SSH server 
 .SH OPTIONS
 .TP
 .B \-b \fIbanner
@@ -88,10 +87,14 @@ Ensure that traffic is transmitted at a certain interval in seconds. This is
 useful for working around firewalls or routers that drop connections after
 a certain period of inactivity. The trade-off is that a session may be
 closed if there is a temporary lapse of network connectivity. A setting
-if 0 disables keepalives.
+if 0 disables keepalives. If no response is received for 3 consecutive keepalives the connection will be closed.
 .TP
 .B \-I \fIidle_timeout
 Disconnect the session if no traffic is transmitted or received for \fIidle_timeout\fR seconds.
+.TP
+.B \-V
+Print the version
+
 .SH FILES
 
 .TP
diff --git a/runopts.h b/runopts.h
index f3d784c58efdbd42ae24ac1f27e5976cf469d36f..28a50ddb374f86c8535f1e17dac4c09b601a1902 100644
--- a/runopts.h
+++ b/runopts.h
@@ -164,4 +164,6 @@ void cli_getopts(int argc, char ** argv);
 void parse_ciphers_macs();
 #endif
 
+void print_version(const char* name);
+
 #endif /* _RUNOPTS_H_ */
diff --git a/svr-runopts.c b/svr-runopts.c
index 414cb45e0a84edf3df0419c1f1502d76fe7db876..ad946bcdaa9c0d901564af15bb13e00424625a70 100644
--- a/svr-runopts.c
+++ b/svr-runopts.c
@@ -92,6 +92,7 @@ static void printhelp(const char * progname) {
 					"-W <receive_window_buffer> (default %d, larger may be faster, max 1MB)\n"
 					"-K <keepalive>  (0 is never, default %d, in seconds)\n"
 					"-I <idle_timeout>  (0 is never, default %d, in seconds)\n"
+					"-V    Version\n"
 #ifdef DEBUG_TRACE
 					"-v		verbose (compiled with DEBUG_TRACE)\n"
 #endif
@@ -256,7 +257,7 @@ void svr_getopts(int argc, char ** argv) {
 #endif
 				case 'h':
 					printhelp(argv[0]);
-					exit(EXIT_FAILURE);
+					exit(EXIT_SUCCESS);
 					break;
 				case 'u':
 					/* backwards compatibility with old urandom option */
@@ -266,6 +267,10 @@ void svr_getopts(int argc, char ** argv) {
 					debug_trace = 1;
 					break;
 #endif
+				case 'V':
+					print_version("server");
+					exit(EXIT_SUCCESS);
+					break;
 				default:
 					fprintf(stderr, "Unknown argument %s\n", argv[i]);
 					printhelp(argv[0]);