diff --git a/bin/klaus b/bin/klaus
index c2037da35884b2fe39985a21938fda375e19f2b1..77136c3f742f2d2b7d35988de2e7a093fa491c1d 100755
--- a/bin/klaus
+++ b/bin/klaus
@@ -29,8 +29,10 @@ def make_parser():
     parser.add_argument('--host',     help="default: 127.0.0.1", default='127.0.0.1')
     parser.add_argument('--port',     help="default: 8080", default=8080, type=int)
     parser.add_argument('--site-name', help="site name showed in header. default: your hostname")
-    parser.add_argument('-b', '--browser', help="open klaus in default browser on server start. Optional argument: browser executable to use",
-                        default=None, const='__default_browser__', nargs='?')
+    parser.add_argument('-b', '--browser', help="open klaus in a browser on server start",
+                        default=False, action='store_true')
+    parser.add_argument('-B', '--with-browser', help="specify which browser to use with --browser",
+                        metavar='BROWSER', default=None)
 
     parser.add_argument('repos', help='repositories to serve',
                         metavar='DIR', nargs='*', type=git_repository)
@@ -75,10 +77,10 @@ def _open_browser(args):
     # losing the simplicity of the code. In the Real World (TM) it'll take
     # longer for the browser to start than it will for us to start
     # serving, so we'll be OK.
-    if args.browser == '__default_browser__':
+    if args.with_browser is None:
         opener = webbrowser.open
     else:
-        opener = webbrowser.get(args.browser).open
+        opener = webbrowser.get(args.with_browser).open
     opener('http://%s:%s' % (args.host, args.port))