diff --git a/gui/slick/js/new/viewlogs.js b/gui/slick/js/new/viewlogs.js
index dea989b1fe4b2ce25b6d0bd9f70f54c1421ee92b..09423b3213773e5e63d867383fd4e141ef9301c8 100644
--- a/gui/slick/js/new/viewlogs.js
+++ b/gui/slick/js/new/viewlogs.js
@@ -8,6 +8,7 @@ $(document).ready(function(){
         $('#minLevel').prop('disabled', true);
         $('#logFilter').prop('disabled', true);
         $('#logSearch').prop('disabled', true);
+        document.body.style.cursor='wait'
         url = srRoot + '/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val();
         $.get(url, function(data){
             history.pushState('data', '', url);
diff --git a/gui/slick/views/config_postProcessing.mako b/gui/slick/views/config_postProcessing.mako
index 66ba675fa6351ed0fb14f24e9cececa0b802482f..cbfcbef01ad57c5b088d5aeb6034bae8b14dcff6 100644
--- a/gui/slick/views/config_postProcessing.mako
+++ b/gui/slick/views/config_postProcessing.mako
@@ -82,6 +82,20 @@
                                 <span class="component-desc">What method should be used to put file in the TV directory?</span>
                             </label>
                         </div>
+                        <div class="field-pair">
+                            <input type="checkbox" name="create_missing_show_dirs" id="create_missing_show_dirs" ${('', 'checked="checked"')[bool(sickbeard.CREATE_MISSING_SHOW_DIRS)]}/>
+                            <label for="create_missing_show_dirs">
+                                <span class="component-title">Create missing show directories</span>
+                                <span class="component-desc">Create missing show diretories when they get deleted</span>
+                            </label>
+                        </div>
+                        <div class="field-pair">
+                            <input type="checkbox" name="add_shows_wo_dir" id="add_shows_wo_dir" ${('', 'checked="checked"')[bool(sickbeard.ADD_SHOWS_WO_DIR)]}/>
+                            <label for="add_shows_wo_dir">
+                                <span class="component-title">Add shows without directory</span>
+                                <span class="component-desc">Add shows without creating a directory (don't recommended)</span>
+                            </label>
+                        </div>
                         <div class="field-pair">
                             <input type="checkbox" name="del_rar_contents" id="del_rar_contents" ${('', 'checked="checked"')[bool(sickbeard.DELRARCONTENTS)]}/>
                             <label for="del_rar_contents">
diff --git a/gui/slick/views/manage_massEdit.mako b/gui/slick/views/manage_massEdit.mako
index 352311f17b40e9feb86730ff9214cbbc89f087d1..d372f3c007228336add59648d57f94081d8d1ad6 100644
--- a/gui/slick/views/manage_massEdit.mako
+++ b/gui/slick/views/manage_massEdit.mako
@@ -83,34 +83,24 @@
     </div>
 </div>
 
-% if anyQualities + bestQualities:
-<% isSelected = ' selected="selected"' %>
-<% isEnabled = isSelected %>
-<% isDisabled = isSelected %>
-% if archive_firstmatch_value:
-    <% isDisabled = '' %>
-% else:
-    <% isEnabled = '' %>
-% endif
 <div class="optionWrapper clearfix">
 <span class="selectTitle">Archive on first match</span>
     <div class="selectChoices">
         <select id="edit_archive_firstmatch" name="archive_firstmatch" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${isEnabled}>enable</option>
-            <option value="disable" ${isDisabled}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[archive_firstmatch_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[archive_firstmatch_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[archive_firstmatch_value == 0]}>disable</option>
         </select>
     </div>
 </div>
-% endif
 
 <div class="optionWrapper clearfix">
 <span class="selectTitle">Flatten Folders <span class="separator">*</span></span>
     <div class="selectChoices">
         <select id="edit_flatten_folders" name="flatten_folders" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${('', 'selected="selected"')[bool(flatten_folders_value)]}>enable</option>
-            <option value="disable" ${('', 'selected="selected"')[not bool(flatten_folders_value)]}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[flatten_folders_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[flatten_folders_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[flatten_folders_value == 0]}>disable</option>
         </select>
     </div>
 </div>
@@ -119,9 +109,9 @@
     <span class="selectTitle">Paused</span>
     <div class="selectChoices">
         <select id="edit_paused" name="paused" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${('', 'selected="selected"')[bool(paused_value)]}>enable</option>
-            <option value="disable" ${('', 'selected="selected"')[not bool(paused_value)]}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[paused_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[paused_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[paused_value == 0]}>disable</option>
         </select>
     </div><br />
 </div>
@@ -142,9 +132,9 @@
     <span class="selectTitle">Scene Numbering</span>
     <div class="selectChoices">
         <select id="edit_scene" name="scene" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${('', 'selected="selected"')[bool(scene_value)]}>enable</option>
-            <option value="disable" ${('', 'selected="selected"')[not bool(scene_value)]}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[scene_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[scene_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[scene_value == 0]}>disable</option>
         </select>
     </div><br />
 </div>
@@ -153,9 +143,9 @@
     <span class="selectTitle">Anime</span>
     <div class="selectChoices">
         <select id="edit_anime" name="anime" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${('', 'selected="selected"')[bool(anime_value)]}>enable</option>
-            <option value="disable" ${('', 'selected="selected"')[not bool(anime_value)]}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[anime_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[anime_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[anime_value == 0]}>disable</option>
         </select>
     </div><br />
 </div>
@@ -164,9 +154,9 @@
     <span class="selectTitle">Sports</span>
     <div class="selectChoices">
         <select id="edit_sports" name="sports" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${('', 'selected="selected"')[bool(sports_value)]}>enable</option>
-            <option value="disable" ${('', 'selected="selected"')[not bool(sports_value)]}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[sports_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[sports_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[sports_value == 0]}>disable</option>
         </select>
     </div><br />
 </div>
@@ -175,9 +165,9 @@
     <span class="selectTitle">Air-By-Date</span>
     <div class="selectChoices">
         <select id="edit_air_by_date" name="air_by_date" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${('', 'selected="selected"')[bool(air_by_date_value)]}>enable</option>
-            <option value="disable" ${('', 'selected="selected"')[not bool(air_by_date_value)]}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[air_by_date_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[air_by_date_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[air_by_date_value == 0]}>disable</option>
         </select>
     </div><br />
 </div>
@@ -186,9 +176,9 @@
 <span class="selectTitle">Subtitles<span class="separator"></span></span>
     <div class="selectChoices">
         <select id="edit_subtitles" name="subtitles" class="form-control form-control-inline input-sm">
-            <option value="keep">&lt; keep &gt;</option>
-            <option value="enable" ${('', 'selected="selected"')[bool(subtitles_value)]}>enable</option>
-            <option value="disable" ${('', 'selected="selected"')[not bool(subtitles_value)]}>disable</option>
+            <option value="keep" ${('', 'selected="selected"')[subtitles_value == None]}>&lt; keep &gt;</option>
+            <option value="enable" ${('', 'selected="selected"')[subtitles_value == 1]}>enable</option>
+            <option value="disable" ${('', 'selected="selected"')[subtitles_value == 0]}>disable</option>
         </select>
     </div><br />
 </div>
diff --git a/sickbeard/common.py b/sickbeard/common.py
index c96d6d24a7b65e2e9f0b49c80adeb7b0b37674fc..74f1616f8334b32ce1599c427bf370aedfa5edf8 100644
--- a/sickbeard/common.py
+++ b/sickbeard/common.py
@@ -270,7 +270,7 @@ class Quality:
             ret = Quality.SDTV
         elif checkName([r"web.?dl|webrip", r"xvid|x26[45]|h.?26[45]"], all) and not checkName([r"(720|1080)[pi]"], all):
             ret = Quality.SDTV
-        elif checkName([r"(dvdrip|b[rd]rip|blue?-?ray)(.ws)?.(xvid|divx|x26[45])"], any) and not checkName([r"(720|1080)[pi]"], all):
+        elif checkName([r"(dvd(rip|mux)|b[rd](rip|mux)|blue?-?ray)(.ws)?.(xvid|divx|x26[45])"], any) and not checkName([r"(720|1080)[pi]"], all):
             ret = Quality.SDDVD
         elif checkName([r"720p", r"hd.?tv", r"x26[45]"], all) or checkName([r"hr.ws.pdtv.x26[45]"], any) and not checkName(
                 [r"1080[pi]"], all):
diff --git a/sickbeard/providers/extratorrent.py b/sickbeard/providers/extratorrent.py
index 585a8e13f04e1b81b6bc9c2b2229322b020c4bf6..ab703a4d332f8447b4d30e41899ef530d3f5cf4d 100644
--- a/sickbeard/providers/extratorrent.py
+++ b/sickbeard/providers/extratorrent.py
@@ -123,8 +123,8 @@ class ExtraTorrentProvider(generic.TorrentProvider):
                         info_hash = item['info_hash']
                         url = item['enclosure']['@url']
                         size = int(item['enclosure']['@length'] or item['size'])
-                        seeders = int(item['seeders'])
-                        leechers = int(item['leechers'])
+                        seeders = helpers.tryInt(item['seeders'],0)
+                        leechers = helpers.tryInt(item['leechers'],0)
 
                         if not seeders or seeders < self.minseed or leechers < self.minleech:
                             continue
diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py
index 906d766d890e9cb37654b3b4f751d1182c142004..183325444089ab6ea397c7828d70ba1a5d226ab5 100644
--- a/sickbeard/subtitles.py
+++ b/sickbeard/subtitles.py
@@ -24,8 +24,9 @@ from sickbeard import db
 from sickrage.helper.common import dateTimeFormat
 from sickrage.helper.encoding import ek
 from sickrage.helper.exceptions import ex
+from enzyme import MKV
+from babelfish import Error as BabelfishError, Language, language_converters
 import subliminal
-import babelfish
 import subprocess
 
 subliminal.cache_region.configure('dogpile.cache.memory')
@@ -70,7 +71,7 @@ def getEnabledServiceList():
 
 #Hack around this for now.
 def fromietf(language):
-    return babelfish.Language.fromopensubtitles(language)
+    return Language.fromopensubtitles(language)
 
 def isValidLanguage(language):
     try:
@@ -92,9 +93,30 @@ def wantedLanguages(sqlLike = False):
 def subtitlesLanguages(video_path):
     """Return a list detected subtitles for the given video file"""
     resultList = []
+    embedded_subtitle_languages = set()
 
     # Serch for embedded subtitles
-    embedded_languages = subliminal.scan_video(video_path, subtitles=False, embedded_subtitles=not sickbeard.EMBEDDED_SUBTITLES_ALL)
+    if video_path.endswith('mkv'):
+        with open(video_path, 'rb') as f:
+            mkv = MKV(f)
+            if mkv.subtitle_tracks:
+                for st in mkv.subtitle_tracks:
+                    if st.language:
+                        try:
+                            embedded_subtitle_languages.add(Language.fromalpha3b(st.language))
+                        except BabelfishError:
+                            logger.log('Embedded subtitle track is not a valid language', logger.DEBUG)
+                            embedded_subtitle_languages.add(Language('und'))
+                    elif st.name:
+                        try:
+                            embedded_subtitle_languages.add(Language.fromname(st.name))
+                        except BabelfishError:
+                            logger.log('Embedded subtitle track is not a valid language', logger.DEBUG)
+                            embedded_subtitle_languages.add(Language('und'))
+                    else:
+                        embedded_subtitle_languages.add(Language('und'))
+            else:
+                logger.log('MKV has no subtitle track', logger.DEBUG)
 
     # Search subtitles in the absolute path
     if sickbeard.SUBTITLES_DIR and ek(os.path.exists, sickbeard.SUBTITLES_DIR):
@@ -105,7 +127,7 @@ def subtitlesLanguages(video_path):
 
     languages = subliminal.video.scan_subtitle_languages(video_path)
 
-    for language in languages.union(embedded_languages.subtitle_languages):
+    for language in languages.union(embedded_subtitle_languages):
         if hasattr(language, 'opensubtitles') and language.opensubtitles:
             resultList.append(language.opensubtitles)
         elif hasattr(language, 'alpha3') and language.alpha3:
@@ -122,10 +144,10 @@ def subtitlesLanguages(video_path):
 
 # TODO: Return only languages our providers allow
 def subtitleLanguageFilter():
-    return [babelfish.Language.fromopensubtitles(language) for language in babelfish.language_converters['opensubtitles'].codes if len(language) == 3]
+    return [Language.fromopensubtitles(language) for language in language_converters['opensubtitles'].codes if len(language) == 3]
 
 def subtitleCodeFilter():
-    return [babelfish.Language.fromopensubtitles(language).opensubtitles for language in babelfish.language_converters['opensubtitles'].codes if len(language) == 3]
+    return [Language.fromopensubtitles(language).opensubtitles for language in language_converters['opensubtitles'].codes if len(language) == 3]
 
 class SubtitlesFinder():
     """
diff --git a/sickbeard/versionChecker.py b/sickbeard/versionChecker.py
index e49d2eaddfaa0f764dba6ba2a3de8a39008020bc..d68f3547a78442102784a68184490b9d59a62cc3 100644
--- a/sickbeard/versionChecker.py
+++ b/sickbeard/versionChecker.py
@@ -164,10 +164,10 @@ class CheckVersion:
                     logger.log(u"We can't proceed with the update. New update has a old DB version. It's not possible to downgrade", logger.ERROR)
                     return False
                 else:
-                    logger.log(u"We can't proceed with the update. Unable to check remote DB version", logger.ERROR)
+                    logger.log(u"We can't proceed with the update. Unable to check remote DB version. Error: %s" % result, logger.ERROR)
                     return False
-            except:
-                logger.log(u"We can't proceed with the update. Unable to compare DB version", logger.ERROR)
+            except Exception as e:
+                logger.log(u"We can't proceed with the update. Unable to compare DB version. Error: %s" % repr(e), logger.ERROR)
                 return False
 
         def postprocessor_safe(self):
@@ -199,6 +199,7 @@ class CheckVersion:
 
     def getDBcompare(self):
         try:
+            self.updater.need_update()
             cur_hash = str(self.updater.get_newest_commit_hash())
             assert len(cur_hash) is 40, "Commit hash wrong length: %s hash: %s" % (len(cur_hash), cur_hash)
 
@@ -216,9 +217,8 @@ class CheckVersion:
                 return 'equal'
             else:
                 return 'downgrade'
-        except Exception:
-            raise
-            return 'error'
+        except Exception as e:
+            return repr(e)
 
     def find_install_type(self):
         """
diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py
index b1200db7ae98f5e39fb930749998799fb8b62b4f..b6bdd8990493435ff95608595f49c7014c0764e2 100644
--- a/sickbeard/webapi.py
+++ b/sickbeard/webapi.py
@@ -412,7 +412,7 @@ class ApiCall(ApiHandler):
                 value = True
             elif value in ("false", "False", "FALSE"):
                 value = False
-            else:
+            elif value not in (True, False):
                 error = True
         elif type == "list":
             value = value.split("|")
@@ -421,14 +421,12 @@ class ApiCall(ApiHandler):
         elif type == "ignore":
             pass
         else:
-            logger.log(u"API :: Invalid param type set " + str(type) + " can not check or convert ignoring it",
-                       logger.ERROR)
+            logger.log(u'API :: Invalid param type: "%s" can not be checked. Ignoring it.' % str(type), logger.ERROR)
 
         if error:
             # this is a real ApiError !!
-            raise ApiError(
-                u"param: '" + str(name) + "' with given value: '" + str(value) + "' could not be parsed into '" + str(
-                    type) + "'")
+            raise ApiError(u'param "%s" with given value "%s" could not be parsed into "%s"'
+                           % (str(name), str(value), str(type)))
 
         return value
 
@@ -670,7 +668,7 @@ class CMD_ComingEpisodes(ApiCall):
         self.sort, args = self.check_params(args, kwargs, "sort", "date", False, "string", ComingEpisodes.sorts.keys())
         self.type, args = self.check_params(args, kwargs, "type", '|'.join(ComingEpisodes.categories), False, "list",
                                             ComingEpisodes.categories)
-        self.paused, args = self.check_params(args, kwargs, "paused", sickbeard.COMING_EPS_DISPLAY_PAUSED, False,
+        self.paused, args = self.check_params(args, kwargs, "paused", bool(sickbeard.COMING_EPS_DISPLAY_PAUSED), False,
                                               "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
@@ -724,7 +722,7 @@ class CMD_Episode(ApiCall):
         self.s, args = self.check_params(args, kwargs, "season", None, True, "int", [])
         self.e, args = self.check_params(args, kwargs, "episode", None, True, "int", [])
         # optional
-        self.fullPath, args = self.check_params(args, kwargs, "full_path", 0, False, "bool", [])
+        self.fullPath, args = self.check_params(args, kwargs, "full_path", False, False, "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
@@ -843,7 +841,7 @@ class CMD_EpisodeSetStatus(ApiCall):
                                               ["wanted", "skipped", "ignored", "failed"])
         # optional
         self.e, args = self.check_params(args, kwargs, "episode", None, False, "int", [])
-        self.force, args = self.check_params(args, kwargs, "force", 0, False, "bool", [])
+        self.force, args = self.check_params(args, kwargs, "force", False, False, "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
@@ -1273,12 +1271,12 @@ class CMD_PostProcess(ApiCall):
         # required
         # optional
         self.path, args = self.check_params(args, kwargs, "path", None, False, "string", [])
-        self.force_replace, args = self.check_params(args, kwargs, "force_replace", 0, False, "bool", [])
-        self.return_data, args = self.check_params(args, kwargs, "return_data", 0, False, "bool", [])
+        self.force_replace, args = self.check_params(args, kwargs, "force_replace", False, False, "bool", [])
+        self.return_data, args = self.check_params(args, kwargs, "return_data", False, False, "bool", [])
         self.process_method, args = self.check_params(args, kwargs, "process_method", False, False, "string",
                                                       ["copy", "symlink", "hardlink", "move"])
-        self.is_priority, args = self.check_params(args, kwargs, "is_priority", 0, False, "bool", [])
-        self.failed, args = self.check_params(args, kwargs, "failed", 0, False, "bool", [])
+        self.is_priority, args = self.check_params(args, kwargs, "is_priority", False, False, "bool", [])
+        self.failed, args = self.check_params(args, kwargs, "failed", False, False, "bool", [])
         self.type, args = self.check_params(args, kwargs, "type", "auto", None, "string", ["auto", "manual"])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
@@ -1334,7 +1332,7 @@ class CMD_SickBeardAddRootDir(ApiCall):
         # required
         self.location, args = self.check_params(args, kwargs, "location", None, True, "string", [])
         # optional
-        self.default, args = self.check_params(args, kwargs, "default", 0, False, "bool", [])
+        self.default, args = self.check_params(args, kwargs, "default", False, False, "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
@@ -1548,7 +1546,7 @@ class CMD_SickBeardPauseBacklog(ApiCall):
     def __init__(self, args, kwargs):
         # required
         # optional
-        self.pause, args = self.check_params(args, kwargs, "pause", 0, False, "bool", [])
+        self.pause, args = self.check_params(args, kwargs, "pause", False, False, "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
@@ -1960,7 +1958,7 @@ class CMD_ShowAddExisting(ApiCall):
                                                ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl",
                                                 "fullhdwebdl", "hdbluray", "fullhdbluray"])
         self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders",
-                                                       str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", [])
+                                                       bool(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", [])
         self.subtitles, args = self.check_params(args, kwargs, "subtitles", int(sickbeard.USE_SUBTITLES),
                                                  False, "int", [])
         # super, missing, help
@@ -2057,22 +2055,21 @@ class CMD_ShowAddNew(ApiCall):
                                                ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl",
                                                 "fullhdwebdl", "hdbluray", "fullhdbluray"])
         self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders",
-                                                       str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", [])
+                                                       bool(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", [])
         self.status, args = self.check_params(args, kwargs, "status", None, False, "string",
                                               ["wanted", "skipped", "ignored"])
         self.lang, args = self.check_params(args, kwargs, "lang", sickbeard.INDEXER_DEFAULT_LANGUAGE, False, "string",
                                             self.valid_languages.keys())
-        self.subtitles, args = self.check_params(args, kwargs, "subtitles", int(sickbeard.USE_SUBTITLES),
+        self.subtitles, args = self.check_params(args, kwargs, "subtitles", bool(sickbeard.USE_SUBTITLES),
                                                  False, "bool", [])
-        self.anime, args = self.check_params(args, kwargs, "anime", int(sickbeard.ANIME_DEFAULT), False,
+        self.anime, args = self.check_params(args, kwargs, "anime", bool(sickbeard.ANIME_DEFAULT), False,
                                              "bool", [])
-        self.scene, args = self.check_params(args, kwargs, "scene", int(sickbeard.SCENE_DEFAULT), False,
+        self.scene, args = self.check_params(args, kwargs, "scene", bool(sickbeard.SCENE_DEFAULT), False,
                                              "bool", [])
         self.future_status, args = self.check_params(args, kwargs, "future_status", None, False, "string",
                                                      ["wanted", "skipped", "ignored"])
-
         self.archive_firstmatch, args = self.check_params(args, kwargs, "archive_firstmatch",
-                                             int(sickbeard.ARCHIVE_DEFAULT), False, "bool", [])
+                                                          bool(sickbeard.ARCHIVE_DEFAULT), False, "bool", [])
 
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
@@ -2249,7 +2246,7 @@ class CMD_ShowDelete(ApiCall):
         # required
         self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", [])
         # optional
-        self.removefiles, args = self.check_params(args, kwargs, "removefiles", 0, False, "bool", [])
+        self.removefiles, args = self.check_params(args, kwargs, "removefiles", False, False, "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
@@ -2414,7 +2411,7 @@ class CMD_ShowPause(ApiCall):
         # required
         self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", [])
         # optional
-        self.pause, args = self.check_params(args, kwargs, "pause", 0, False, "bool", [])
+        self.pause, args = self.check_params(args, kwargs, "pause", False, False, "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index 40de74d7935709e7514fb4e0ed859148dd780de4..1963e0b8e7ac4a9104c76255eb25c9975ada9932 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -1951,12 +1951,11 @@ class Home(WebRoot):
         # return the correct json value
 
         # Find the quality class for the episode
-        quality_class = Quality.qualityStrings[Quality.UNKNOWN]
         ep_status, ep_quality = Quality.splitCompositeStatus(ep_obj.status)
-        for x in (SD, HD720p, HD1080p):
-            if ep_quality in Quality.splitQuality(x)[0]:
-                quality_class = qualityPresetStrings[x]
-                break
+        if ep_quality in Quality.cssClassStrings:
+            quality_class = Quality.cssClassStrings[ep_quality]
+        else:
+            quality_class = Quality.cssClassStrings[Quality.UNKNOWN]
 
         return quality_class
 
@@ -3932,7 +3931,7 @@ class ConfigPostProcessing(Config):
                            no_delete=None, rename_episodes=None, airdate_episodes=None, unpack=None,
                            move_associated_files=None, sync_files=None, postpone_if_sync_files=None, nfo_rename=None,
                            tv_download_dir=None, naming_custom_abd=None,
-                           naming_anime=None,
+                           naming_anime=None,create_missing_show_dirs=None,add_shows_wo_dir=None,
                            naming_abd_pattern=None, naming_strip_year=None, use_failed_downloads=None,
                            delete_failed=None, extra_scripts=None, skip_removed_files=None,
                            naming_custom_sports=None, naming_sports_pattern=None,
@@ -3957,6 +3956,8 @@ class ConfigPostProcessing(Config):
             sickbeard.UNPACK = config.checkbox_to_value(unpack)
         sickbeard.NO_DELETE = config.checkbox_to_value(no_delete)
         sickbeard.KEEP_PROCESSED_DIR = config.checkbox_to_value(keep_processed_dir)
+        sickbeard.CREATE_MISSING_SHOW_DIRS = config.checkbox_to_value(create_missing_show_dirs)
+        sickbeard.ADD_SHOWS_WO_DIR = config.checkbox_to_value(add_shows_wo_dir)
         sickbeard.PROCESS_METHOD = process_method
         sickbeard.DELRARCONTENTS = config.checkbox_to_value(del_rar_contents)
         sickbeard.EXTRA_SCRIPTS = [x.strip() for x in extra_scripts.split('|') if x.strip()]