diff --git a/client/djrandom_client/client.py b/client/djrandom_client/client.py
index ce005cc5ef51d31cc8467dd3af6be7e7171b63c9..3a15226a8ce6d759243a00cc9e5c4fb21a297b4b 100644
--- a/client/djrandom_client/client.py
+++ b/client/djrandom_client/client.py
@@ -15,13 +15,16 @@ from djrandom_client import utils
 from djrandom_client import throttle
 
 # Detect platform and selectively enable inotify/fsevents watchers.
-watcher_support = True
-if platform.system() == 'Darwin':
-    import djrandom_client.osx_watcher as watcher
-elif platform.system() == 'Linux':
-    import djrandom_client.linux_watcher as watcher
-else:
-    watcher_support = False
+watcher_support = False
+try:
+    if platform.system() == 'Darwin':
+        import djrandom_client.osx_watcher as watcher
+        watcher_support = True
+    elif platform.system() == 'Linux':
+        import djrandom_client.linux_watcher as watcher
+        watcher_support = True
+except ImportError:
+    pass
 
 log = logging.getLogger(__name__)
 
diff --git a/client/djrandom_client/test/test_client.py b/client/djrandom_client/test/test_client.py
index 90b1ed6f2e804d73a03ea21095400ac201411062..55a38eca1784fa098c3e0f655a9b960a351ae81b 100644
--- a/client/djrandom_client/test/test_client.py
+++ b/client/djrandom_client/test/test_client.py
@@ -114,6 +114,7 @@ class ClientWithConfigFileTest(ClientRunner, mox.MoxTestBase):
                             client.run_client,
                             CompareTuple(mox.IsA(str),
                                          mox.IsA(str),
+                                         [],
                                          'KEY',
                                          None, 10, True))
 
@@ -145,6 +146,7 @@ class ClientOptionsTest(ClientRunner, mox.MoxTestBase):
                             client.run_client,
                             CompareTuple(mox.IsA(str),
                                          mox.IsA(str),
+                                         [],
                                          'KEY',
                                          None, 0, True))
 
@@ -157,6 +159,7 @@ class ClientOptionsTest(ClientRunner, mox.MoxTestBase):
                             client.run_client,
                             CompareTuple('http://server/receiver',
                                          '/my/music',
+                                         [],
                                          'KEY',
                                          True, 10, False))
 
@@ -165,24 +168,6 @@ class ClientOptionsTest(ClientRunner, mox.MoxTestBase):
                    '--music_dir=/my/music', '--bwlimit=10',
                    '--once', '--no_realtime_watch'])
 
-    def test_music_path_expands_tilde(self):
-        utils.check_version().AndReturn(False)
-
-        def music_dir_does_not_start_with_tilde(music_dir):
-            return not music_dir.startswith('~')
-
-        daemonize.daemonize(mox.IgnoreArg(),
-                            client.run_client,
-                            CompareTuple('http://server/receiver',
-                                         mox.Func(music_dir_does_not_start_with_tilde),
-                                         'KEY',
-                                         True, 10, False))
-
-        self.mox.ReplayAll()
-        self._Run(['--api_key=KEY', '--server_url=http://server/receiver',
-                   '--music_dir=~/music', '--bwlimit=10',
-                   '--once', '--no_realtime_watch'])
-
 
 class RunClientTest(mox.MoxTestBase):
 
@@ -195,7 +180,7 @@ class RunClientTest(mox.MoxTestBase):
 
         uploader = self.mox.CreateMock(upload.Uploader)
         self.mox.StubOutWithMock(upload, 'Uploader', use_mock_anything=True)
-        upload.Uploader('http://server/receiver', 'KEY').AndReturn(uploader)
+        upload.Uploader('http://server/receiver', 'KEY', []).AndReturn(uploader)
         uploader.setDaemon(True)
         uploader.queue = 'queue!'
 
@@ -213,6 +198,7 @@ class RunClientTest(mox.MoxTestBase):
         client.run_client(
             'http://server/receiver',
             '/my/music',
+            [],
             'KEY',
             True,
             150,
diff --git a/client/djrandom_client/test/test_upload.py b/client/djrandom_client/test/test_upload.py
index 64f1c40df8ea85ec9305b4c3fde383450748829f..b0f1a3092e0cb3a64f7b0ba4cf31b19770bb55f5 100644
--- a/client/djrandom_client/test/test_upload.py
+++ b/client/djrandom_client/test/test_upload.py
@@ -53,7 +53,8 @@ class UploadTest(mox.MoxTestBase):
 
         self.opener = self.mox.CreateMockAnything()
         self.mox.StubOutWithMock(urllib2, 'build_opener')
-        urllib2.build_opener(throttle.ThrottledHTTPHandler
+        urllib2.build_opener(throttle.ThrottledHTTPHandler,
+                             throttle.ThrottledHTTPSHandler
                              ).AndReturn(self.opener)
 
         self.test_file = os.path.join(self.tmpdir, 'testfile')
diff --git a/client/djrandom_client/test/test_utils.py b/client/djrandom_client/test/test_utils.py
index 1f4abcb5cfed19799d335d3f59ba418c41182793..df64b0f7e43959f637f6f4fb8587ebf869c84ee2 100644
--- a/client/djrandom_client/test/test_utils.py
+++ b/client/djrandom_client/test/test_utils.py
@@ -36,9 +36,8 @@ var_b = b
 ''')
 
         parser = self.mox.CreateMockAnything()
-        parser.set_default('var_a', 'a')
-        parser.set_default('var_b', 'b')
-        parser.set_default('var_c', '42')
+        parser.set_defaults(
+            var_a='a', var_b='b', var_c='42')
         self.mox.ReplayAll()
 
         utils.read_config_defaults(parser, cfg_file)
@@ -48,9 +47,12 @@ var_b = b
         with open(cfg_file, 'w') as fd:
             fd.write('this is not a config\n')
 
+        parser = self.mox.CreateMockAnything()
+        self.mox.ReplayAll()
+
         self.assertRaises(utils.SyntaxError,
                           utils.read_config_defaults,
-                          None, cfg_file)
+                          parser, cfg_file)
 
     def test_read_config_file_missing(self):
         utils.read_config_defaults(
diff --git a/client/djrandom_client/utils.py b/client/djrandom_client/utils.py
index 427822acbb19b9c62f93cabae022ec61f59d00d1..07c1d33a2d20a0d1fd968a550e7971d35bd6165e 100644
--- a/client/djrandom_client/utils.py
+++ b/client/djrandom_client/utils.py
@@ -31,8 +31,10 @@ def _unquote(s):
 
 
 def read_config_defaults(parser, path):
+    _multivalued_opts = set(['exclude'])
     if not os.path.exists(path):
         return
+    defaults = {}
     with open(path, 'r') as fd:
         for linenum, line in enumerate(fd):
             line = line.strip()
@@ -42,7 +44,12 @@ def read_config_defaults(parser, path):
                 raise SyntaxError('%s, line %d: Syntax Error' % (
                         path, 1 + linenum))
             var, value = map(lambda x: x.strip(), line.split('=', 1))
-            parser.set_default(var, _unquote(value))
+            value = _unquote(value)
+            if var in _multivalued_opts:
+                defaults.setdefault(var, []).append(value)
+            else:
+                defaults[var] = value
+    parser.set_defaults(**defaults)
 
 
 def _split_version_string(s):
diff --git a/client/djrandom_client/version.py b/client/djrandom_client/version.py
index bcddf3af0a3786d28bc0d65b3e23f99222293cc2..09e82fd65d33e7118abcad132c1875e1c9e2c0d9 100644
--- a/client/djrandom_client/version.py
+++ b/client/djrandom_client/version.py
@@ -1 +1 @@
-VERSION = '0.2.5'
+VERSION = '0.2.6'