diff --git a/gui/slick/interfaces/default/config_general.tmpl b/gui/slick/interfaces/default/config_general.tmpl
index fda5dfd1eccbeafc1f4aca5709e00005ac651995..aff6a9b2e5d01713a31173b8c3162c429a0bc9c6 100644
--- a/gui/slick/interfaces/default/config_general.tmpl
+++ b/gui/slick/interfaces/default/config_general.tmpl
@@ -323,6 +323,9 @@
 								<span class="component-desc">
 									<input type="checkbox" name="filter_row" id="filter_row" #if $sickbeard.FILTER_ROW == True then 'checked="checked"' else ''#/>
 									<p>Add a filter row to the show display on the home page</p>
+									<p>Supports =, >, >=, <=, <, xx to yy , xx - yy</p>
+									<p><b>Note:</b> =, >, >=, <=, < should be first, followed by a space, then the value.</p>
+									<p>Examples: '> 90', '= 100', '0 to 99'</p>
 								</span>
 							</label>
 						</div>                        
diff --git a/gui/slick/interfaces/default/manage_episodeStatuses.tmpl b/gui/slick/interfaces/default/manage_episodeStatuses.tmpl
index 78a67891baeee3bebf6e17555f5248ddfbec30f8..4f7a06fc3cc4f3718d9e55ae6bc64f5350605134 100644
--- a/gui/slick/interfaces/default/manage_episodeStatuses.tmpl
+++ b/gui/slick/interfaces/default/manage_episodeStatuses.tmpl
@@ -61,6 +61,7 @@ $statusList.remove($int($whichStatus))
 $statusList.append($common.FAILED)
 #end if
 
+<select>
 #for $curStatus in $statusList:
 <option value="$curStatus">$common.statusStrings[$curStatus]</option>
 #end for
diff --git a/gui/slick/interfaces/default/restart_bare.tmpl b/gui/slick/interfaces/default/restart_bare.tmpl
index f48b50d69551236631326b8704049f864d0ac587..ac795e04f8a8a035131f5f61158a745fbd255e42 100644
--- a/gui/slick/interfaces/default/restart_bare.tmpl
+++ b/gui/slick/interfaces/default/restart_bare.tmpl
@@ -18,11 +18,12 @@ sbHttpPort = "$curSBHttpPort";
 sbHttpsEnabled = "$curSBHttpsEnabled";
 sbHandleReverseProxy = "$curSBHandleReverseProxy";
 sbHost = "$curSBHost";
+sbDefaultPage = "$sbDefaultPage";
 //-->
 </script>
 
 <script type="text/javascript" src="$sbRoot/js/lib/jquery-1.11.2.min.js?$sbPID"></script>
-<script type="text/javascript" src="$sbRoot/js/restart.js?$sbPID"></script>
+<script type="text/javascript" src="$sbRoot/js/restart.js?$sbPID&$sbDefaultPage"></script>
 
 #set themeSpinner = '-dark' if 'dark' == themeSpinner else ''
 <h2>Performing Restart</h2>
@@ -41,7 +42,7 @@ Waiting for SickRage to start again:
 </div>
 
 <div id="refresh_message" style="display: none;">
-Loading the home page:
+Loading the default page:
 <img src="$sbRoot/images/loading16${themeSpinner}.gif" height="16" width="16" id="refresh_loading" />
 </div>
 
diff --git a/gui/slick/js/restart.js b/gui/slick/js/restart.js
index 1ee32d09fa3b3a36e361842f94e5586e0cf0f30e..ae7fb75b6007ecea0ddc6083f7d0afe1f14304dd 100644
--- a/gui/slick/js/restart.js
+++ b/gui/slick/js/restart.js
@@ -38,7 +38,7 @@ $(document).ready(function() {
 					$('#restart_loading').hide();
 					$('#restart_success').show();
 					$('#refresh_message').show();
-					setTimeout(function(){window.location = sbRoot + '/home/';}, 5000);
+					setTimeout(function(){window.location = sbRoot + '/' + sbDefaultPage + '/';}, 5000);
 				}
 			}
 			
diff --git a/sickbeard/db.py b/sickbeard/db.py
index e1045711e7f09f2380978610b9f325579df46675..a5f8701f7c2ee99e2667ed77d9a6ed0b3f6fe843 100644
--- a/sickbeard/db.py
+++ b/sickbeard/db.py
@@ -229,19 +229,23 @@ class DBConnection(object):
 
     def _unicode_text_factory(self, x):
         try:
+            # Already unicode, empty string, or ascii
             x = unicode(x)
         except Exception:
             try:
-                x = unicode(x, sickbeard.SYS_ENCODING)
+                # most common encoding from web
+                x = unicode(x, 'utf-8')
             except Exception:
                 try:
-                    x = unicode(x, 'utf-8')
+                    # most common from web if utf-8 fails
+                    x = unicode(x, 'latin-1')
                 except Exception:
                     try:
-                        x = unicode(x, 'latin-1')
+                        # try system encoding before trusting chardet
+                        x = unicode(x, sickbeard.SYS_ENCODING)
                     except Exception:
                         try:
-                            # Chardet can be wrong, so try it before ignoring
+                            # Chardet can be wrong, so try it last before ignoring
                             x = unicode(x, chardet.detect(x).get('encoding'))
                         except Exception:
                             x = unicode(x, sickbeard.SYS_ENCODING, errors="ignore")
diff --git a/sickbeard/encodingKludge.py b/sickbeard/encodingKludge.py
index 04a2ec27d5dc990febda5d48730784d2600ef4bc..622cfc8aba371da49777df10a1bad3f9eddafda9 100644
--- a/sickbeard/encodingKludge.py
+++ b/sickbeard/encodingKludge.py
@@ -26,16 +26,19 @@ def _toUnicode(x):
             x = unicode(x)
         except Exception:
             try:
-                x = unicode(x, sickbeard.SYS_ENCODING)
+                x = unicode(x, 'utf-8')
             except Exception:
                 try:
-                   x = unicode(x, 'utf-8')
+                   x = unicode(x, 'latin-1')
                 except Exception:
                     try:
-                        x = unicode(x, 'latin-1')
+                        x = unicode(x, sickbeard.SYS_ENCODING)
                     except Exception:
-                        # Chardet can be wrong, so try it last
-                        x = unicode(x, chardet.detect(x).get('encoding'))
+                        try:
+                            # Chardet can be wrong, so try it last
+                            x = unicode(x, chardet.detect(x).get('encoding'))
+                        except Exception:
+                            x = unicode(x, sickbeard.SYS_ENCODING, 'replace')
     return x
 
 def ss(x):
diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py
index aaacd1fd65e219572f90f6d549194534f28f8327..4ee1a49d8f6e95a3682747a87c51dc27dfdf4f62 100644
--- a/sickbeard/helpers.py
+++ b/sickbeard/helpers.py
@@ -145,6 +145,7 @@ def remove_non_release_groups(name):
                        '^\[ www\.Cpasbien\.com \] ': 'searchre',
                        '^\[www\.Cpasbien\.com\] ': 'searchre',
                        '^\[www\.Cpasbien\.pe\] ': 'searchre',
+                       '^\[www\.frenchtorrentdb\.com\] ': 'searchre',
                       }
 
     _name = name
@@ -1347,8 +1348,6 @@ def headURL(url, params=None, headers={}, timeout=30, session=None, json=False,
             logger.log(u"Requested headURL " + url + " returned status code is " + str(
                 resp.status_code) + ': ' + codeDescription(resp.status_code), logger.DEBUG)
             return False
-        else:
-            logger.log(u"Requested headURL " + url + " returned status code is " + str(resp.status_code) , logger.DEBUG)
 
         if proxyGlypeProxySSLwarning is not None:
             if re.search('The site you are attempting to browse is on a secure connection', resp.text):
@@ -1402,8 +1401,6 @@ def getURL(url, post_data=None, params={}, headers={}, timeout=30, session=None,
             logger.log(u"Requested getURL " + url + " returned status code is " + str(
                 resp.status_code) + ': ' + codeDescription(resp.status_code), logger.DEBUG)
             return
-        else:
-            logger.log(u"Requested getURL " + url + " returned status code is " + str(resp.status_code), logger.DEBUG)
 
         if proxyGlypeProxySSLwarning is not None:
             if re.search('The site you are attempting to browse is on a secure connection', resp.text):
diff --git a/sickbeard/providers/btn.py b/sickbeard/providers/btn.py
index 4a2c6aaaeb5b3d79c4ed3788057ddfbe884bf5cd..1ca0085ab3806dfe5c1588e99471009a333cbe7d 100644
--- a/sickbeard/providers/btn.py
+++ b/sickbeard/providers/btn.py
@@ -33,7 +33,7 @@ from sickbeard.exceptions import ex, AuthException
 from sickbeard.common import MULTI_EP_RESULT, SEASON_RESULT, USER_AGENT
 from sickbeard import db
 from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException
-from sickbeard.common import Quality
+from sickbeard.common import Quality, cpu_presets
 
 import jsonrpclib
 from datetime import datetime
@@ -144,6 +144,7 @@ class BTNProvider(generic.TorrentProvider):
 
         try:
             parsedJSON = server.getTorrents(apikey, params, int(results_per_page), int(offset))
+            time.sleep(cpu_presets[sickbeard.CPU_PRESET])
 
         except jsonrpclib.jsonrpc.ProtocolError, error:
             if error.message == 'Call Limit Exceeded':
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index 644a4e77ac433b3d4c679eae6b6e113e85499a82..ffa29e2d5a36b9177b853dd01c189e7b8fbdc548 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -96,13 +96,13 @@ class html_entities(CheetahFilter):
                 filtered = unicode(val)
             except Exception:
                 try:
-                    filtered = unicode(val, sickbeard.SYS_ENCODING)
+                    filtered = unicode(val, 'utf-8')
                 except Exception:
                     try:
-                        filtered = unicode(val, 'utf-8')
+                        filtered = unicode(val, 'latin-1')
                     except Exception:
                         try:
-                            filtered = unicode(val, 'latin-1')
+                            filtered = unicode(val, sickbeard.SYS_ENCODING)
                         except Exception:
                             logger.log(u'Unable to decode using %s, utf-8, or latin-1. Falling back to chardet!' %
                                     sickbeard.SYS_ENCODING, logger.ERROR)
@@ -129,6 +129,7 @@ class PageTemplate(CheetahTemplate):
         self.sbHttpsEnabled = sickbeard.ENABLE_HTTPS
         self.sbHandleReverseProxy = sickbeard.HANDLE_REVERSE_PROXY
         self.sbThemeName = sickbeard.THEME_NAME
+        self.sbDefaultPage = sickbeard.DEFAULT_PAGE
         self.sbLogin = rh.get_current_user()
 
         if rh.request.headers['Host'][0] == '[':
@@ -432,7 +433,7 @@ class WebRoot(WebHandler):
             layout = 'poster'
 
         sickbeard.HOME_LAYOUT = layout
-
+        #Dont redirect to default page so user can see new layout
         return self.redirect("/home/")
 
     def setPosterSortBy(self, sort):
@@ -1116,7 +1117,7 @@ class Home(WebRoot):
 
     def shutdown(self, pid=None):
         if str(pid) != str(sickbeard.PID):
-            return self.redirect("/home/")
+            return self.redirect('/' + sickbeard.DEFAULT_PAGE +'/')
 
         sickbeard.events.put(sickbeard.events.SystemEvent.SHUTDOWN)
 
@@ -1127,7 +1128,7 @@ class Home(WebRoot):
 
     def restart(self, pid=None):
         if str(pid) != str(sickbeard.PID):
-            return self.redirect("/home/")
+            return self.redirect('/' + sickbeard.DEFAULT_PAGE +'/')
 
         t = PageTemplate(rh=self, file="restart.tmpl")
         t.submenu = self.HomeMenu()
@@ -1143,7 +1144,7 @@ class Home(WebRoot):
 
         sickbeard.versionCheckScheduler.action.check_for_new_version(force=True)
 
-        return self.redirect('/home/')
+        return self.redirect('/' + sickbeard.DEFAULT_PAGE +'/')
 
     def update(self, pid=None):
         
@@ -1165,7 +1166,7 @@ class Home(WebRoot):
                 return self._genericMessage("Update Failed",
                                             "Update wasn't successful, not restarting. Check your log for more information.")
         else:
-            return self.redirect('/home/')
+            return self.redirect('/' + sickbeard.DEFAULT_PAGE +'/')
 
     def branchCheckout(self, branch):
         if sickbeard.BRANCH != branch:
@@ -1174,7 +1175,7 @@ class Home(WebRoot):
             return self.update(sickbeard.PID)
         else:
             ui.notifications.message('Already on branch: ', branch)
-            return self.redirect('/home')
+            return self.redirect('/' + sickbeard.DEFAULT_PAGE +'/')
 
     def getDBcompare(self, branchDest=None):
 
@@ -1598,7 +1599,8 @@ class Home(WebRoot):
                                  (showObj.name,
                                   ('deleted', 'trashed')[sickbeard.TRASH_REMOVE_SHOW],
                                   ('(media untouched)', '(with all related media)')[bool(full)]))
-        return self.redirect("/home/")
+        #Dont redirect to default page so user can confirm show was deleted
+        return self.redirect('/home/')
 
 
     def refreshShow(self, show=None):
@@ -1698,7 +1700,7 @@ class Home(WebRoot):
 
     def setStatus(self, show=None, eps=None, status=None, direct=False):
 
-        if show is None or eps is None or status is None:
+        if not all([show, eps, status]):
             errMsg = "You must specify a show and at least one episode"
             if direct:
                 ui.notifications.error('Error', errMsg)
@@ -1716,7 +1718,7 @@ class Home(WebRoot):
 
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(show))
 
-        if showObj is None:
+        if not showObj:
             errMsg = "Error", "Show not in show list"
             if direct:
                 ui.notifications.error('Error', errMsg)
@@ -1726,18 +1728,25 @@ class Home(WebRoot):
 
         segments = {}
         trakt_data = []
-        if eps is not None:
+        if eps:
 
             sql_l = []
             for curEp in eps.split('|'):
 
+                if not curEp:
+                    logger.log(u"curEp was empty when trying to setStatus", logger.DEBUG)
+
                 logger.log(u"Attempting to set status on episode " + curEp + " to " + status, logger.DEBUG)
 
                 epInfo = curEp.split('x')
 
+                if not all(epInfo):
+                    logger.log(u"Something went wrong when trying to setStatus, epInfo[0]: %s, epInfo[1]: %s" % (epInfo[0], epInfo[1]), logger.DEBUG)
+                    continue
+
                 epObj = showObj.getEpisode(int(epInfo[0]), int(epInfo[1]))
 
-                if epObj is None:
+                if not epObj:
                     return self._genericMessage("Error", "Episode couldn't be retrieved")
 
                 if int(status) in [WANTED, FAILED]:
@@ -1753,16 +1762,14 @@ class Home(WebRoot):
                         logger.log(u"Refusing to change status of " + curEp + " because it is UNAIRED", logger.ERROR)
                         continue
 
-                    if int(
-                            status) in Quality.DOWNLOADED and epObj.status not in Quality.SNATCHED + Quality.SNATCHED_PROPER + Quality.DOWNLOADED + [
+                    if int(status) in Quality.DOWNLOADED and epObj.status not in Quality.SNATCHED + Quality.SNATCHED_PROPER + Quality.DOWNLOADED + [
                         IGNORED] and not ek.ek(os.path.isfile, epObj.location):
                         logger.log(
                             u"Refusing to change status of " + curEp + " to DOWNLOADED because it's not SNATCHED/DOWNLOADED",
                             logger.ERROR)
                         continue
 
-                    if int(
-                            status) == FAILED and epObj.status not in Quality.SNATCHED + Quality.SNATCHED_PROPER + Quality.DOWNLOADED:
+                    if int(status) == FAILED and epObj.status not in Quality.SNATCHED + Quality.SNATCHED_PROPER + Quality.DOWNLOADED:
                         logger.log(
                             u"Refusing to change status of " + curEp + " to FAILED because it's not SNATCHED/DOWNLOADED",
                             logger.ERROR)
@@ -2707,6 +2714,7 @@ class HomeAddShows(Home):
                 logger.log(u"Unable to create the folder " + show_dir + ", can't add the show", logger.ERROR)
                 ui.notifications.error("Unable to add show",
                                        "Unable to create the folder " + show_dir + ", can't add the show")
+                #Dont redirect to default page because user wants to see the new show
                 return self.redirect("/home/")
             else:
                 helpers.chmodAsParent(show_dir)
@@ -3799,7 +3807,9 @@ class ConfigGeneral(Config):
         sickbeard.PROXY_INDEXERS = config.checkbox_to_value(proxy_indexers)
         sickbeard.GIT_USERNAME = git_username
         sickbeard.GIT_PASSWORD = git_password
-        sickbeard.GIT_RESET = config.checkbox_to_value(git_reset)
+        #sickbeard.GIT_RESET = config.checkbox_to_value(git_reset)
+        #Force GIT_RESET
+        sickbeard.GIT_RESET = 1        
         sickbeard.GIT_AUTOISSUES = config.checkbox_to_value(git_autoissues)
         sickbeard.GIT_PATH = git_path
         sickbeard.GIT_REMOTE = git_remote