diff --git a/gui/slick/images/providers/BLUETIGERS.png b/gui/slick/images/providers/BLUETIGERS.png
deleted file mode 100644
index e6f83e734de85b96f2577e7a35e0437a48d242f4..0000000000000000000000000000000000000000
Binary files a/gui/slick/images/providers/BLUETIGERS.png and /dev/null differ
diff --git a/gui/slick/images/providers/FNT.png b/gui/slick/images/providers/FNT.png
deleted file mode 100644
index af30de65eb256df3ea3b25a7f2c52cc6aece0e94..0000000000000000000000000000000000000000
Binary files a/gui/slick/images/providers/FNT.png and /dev/null differ
diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py
index 427e14e84814a06217620339f862de2f5acb7ca7..4546404c35870069ac9f372b5c38516cc698d2f5 100755
--- a/sickbeard/__init__.py
+++ b/sickbeard/__init__.py
@@ -37,7 +37,7 @@ from github import Github
 from sickbeard import providers, metadata, config, webserveInit
 from sickbeard.providers.generic import GenericProvider
 from providers import btn, newznab, womble, thepiratebay, torrentleech, kat, iptorrents, \
-    omgwtfnzbs, scc, hdtorrents, torrentday, hdbits, hounddawgs, nextgen, speedcd, nyaatorrents, animenzb, bluetigers, fnt, torrentbytes, animezb, \
+    omgwtfnzbs, scc, hdtorrents, torrentday, hdbits, hounddawgs, nextgen, speedcd, nyaatorrents, animenzb, torrentbytes, animezb, \
     freshontv, morethantv, bitsoup, t411, tokyotoshokan, shazbat, rarbg, alpharatio, tntvillage, binsearch, scenetime
 from sickbeard.config import CheckSection, check_setting_int, check_setting_str, check_setting_float, ConfigMigrator, \
     naming_ep_type
diff --git a/sickbeard/providers/__init__.py b/sickbeard/providers/__init__.py
index 0c802b7466ab58f57b26b45b696eea1b853c5f3e..a20125b0c13ddfda6b91fdfaf458d497a9a93768 100644
--- a/sickbeard/providers/__init__.py
+++ b/sickbeard/providers/__init__.py
@@ -44,8 +44,6 @@ __all__ = ['womble',
            'rarbg',
            'tntvillage',
            'binsearch',
-           'bluetigers',
-           'fnt',
            'scenetime',
 ]
 
diff --git a/sickbeard/providers/bluetigers.py b/sickbeard/providers/bluetigers.py
deleted file mode 100644
index cad18eaa434b9461a83e0c1afad9b0edf7628dff..0000000000000000000000000000000000000000
--- a/sickbeard/providers/bluetigers.py
+++ /dev/null
@@ -1,276 +0,0 @@
-# -*- coding: latin-1 -*-
-# Author: raver2046 <raver2046@gmail.com>
-# URL: http://code.google.com/p/sickbeard/
-#
-# This file is part of Sick Beard.
-#
-# Sick Beard is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Sick Beard is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Sick Beard.  If not, see <http://www.gnu.org/licenses/>.
-
-import traceback
-import re
-import datetime
-import time
-from lib.requests.auth import AuthBase
-import sickbeard
-import generic
-import urllib
-from lib import requests
-from lib.requests import exceptions
-from sickbeard.bs4_parser import BS4Parser
-from sickbeard.common import Quality
-from sickbeard import logger
-from sickbeard import tvcache
-from sickbeard import show_name_helpers
-from sickbeard import db
-from sickbeard import helpers
-from lib.unidecode import unidecode
-from sickbeard import classes
-from sickbeard.helpers import sanitizeSceneName
-from sickbeard.exceptions import ex
-
-
-class BLUETIGERSProvider(generic.TorrentProvider):
-    def __init__(self):
-        generic.TorrentProvider.__init__(self, "BLUETIGERS")
-
-        self.supportsBacklog = True
-        self.enabled = False
-        self.username = None
-        self.password = None
-        self.ratio = None
-        self.token = None
-        self.tokenLastUpdate = None
-
-        self.cache = BLUETIGERSCache(self)
-
-        self.urls = {'base_url': 'https://www.bluetigers.ca/',
-                     'search': 'https://www.bluetigers.ca/torrents-search.php?search=%s%s',
-                     'login': 'https://www.bluetigers.ca/account-login.php',
-                     'download': 'https://www.bluetigers.ca/torrents-details.php?id=%s&hit=1',
-        }
-
-        self.url = self.urls['base_url']
-        self.categories = "&c16=1&c10=1&c130=1&c131=1&c17=1&c18=1&c19=1"
-
-    def isEnabled(self):
-        return self.enabled
-
-    def imageName(self):
-        return 'BLUETIGERS.png'
-
-    def getQuality(self, item, anime=False):
-        quality = Quality.sceneQuality(item[0], anime)
-        return quality
-
-    def _doLogin(self):      
-
-
-        if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()):
-            return True
-
-      
-        login_params = {'username': self.username,
-                            'password': self.password,
-                            'take_login' : '1'
-        }
-
-        if not self.session:
-            self.session = requests.Session()
-
-        logger.log('Performing authentication to BLUETIGERS', logger.DEBUG)
-        try:
-            response = self.session.post(self.urls['login'], data=login_params, timeout=30)
-        except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError), e:
-            logger.log(u'Unable to connect to ' + self.name + ' provider: ' + ex(e), logger.ERROR)
-            return False
-
-        if re.search('/account-logout.php', response.text):
-            logger.log(u'Login to ' + self.name + ' was successful.', logger.DEBUG)
-            return True                
-        else:
-            logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.DEBUG)                
-            return False
-
-        return True
-
-    def _get_season_search_strings(self, ep_obj):
-
-        search_string = {'Season': []}
-        for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-            if ep_obj.show.air_by_date or ep_obj.show.sports:
-                ep_string = show_name + '.' + str(ep_obj.airdate).split('-')[0]
-            elif ep_obj.show.anime:
-                ep_string = show_name + '.' + "%d" % ep_obj.scene_absolute_number
-            else:
-                ep_string = show_name + '.S%02d' % int(ep_obj.scene_season)  # 1) showName.SXX
-
-            search_string['Season'].append(ep_string)
-
-        return [search_string]
-
-    def _get_episode_search_strings(self, ep_obj, add_string=''):
-
-        search_string = {'Episode': []}
-
-        if not ep_obj:
-            return []
-
-        if self.show.air_by_date:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = sanitizeSceneName(show_name) + '.' + \
-                            str(ep_obj.airdate).replace('-', '|')
-                search_string['Episode'].append(ep_string)
-        elif self.show.sports:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = sanitizeSceneName(show_name) + '.' + \
-                            str(ep_obj.airdate).replace('-', '|') + '|' + \
-                            ep_obj.airdate.strftime('%b')
-                search_string['Episode'].append(ep_string)
-        elif self.show.anime:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = sanitizeSceneName(show_name) + '.' + \
-                            "%i" % int(ep_obj.scene_absolute_number)
-                search_string['Episode'].append(ep_string)
-        else:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \
-                            sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season,
-                                                                  'episodenumber': ep_obj.scene_episode} + ' %s' % add_string
-
-                search_string['Episode'].append(re.sub('\s+', '.', ep_string))
-
-        return [search_string]
-
-    def _doSearch(self, search_params, search_mode='eponly', epcount=0, age=0, epObj=None):
-
-        logger.log(u"_doSearch started with ..." + str(search_params), logger.DEBUG)
-
-        results = []
-        items = {'Season': [], 'Episode': [], 'RSS': []}
-
-        for mode in search_params.keys():
-
-            for search_string in search_params[mode]:
-
-                if isinstance(search_string, unicode):
-                    search_string = unidecode(search_string)
-
-                
-                searchURL = self.urls['search'] % (urllib.quote(search_string), self.categories)
-
-                logger.log(u"Search string: " + searchURL, logger.DEBUG)
-                                
-                data = self.getURL(searchURL)
-                if not data:
-                    continue
-
-                try:
-                    with BS4Parser(data, features=["html5lib", "permissive"]) as html:
-                        result_linkz = html.findAll('a',  href=re.compile("torrents-details"))
-        
-                        if not result_linkz:
-                            logger.log(u"The Data returned from " + self.name + " do not contains any torrent",
-                                       logger.DEBUG)
-                            continue
-                        
-                        if result_linkz:
-                            for link in result_linkz:                                                                                                                               
-                                title = link.text
-                                logger.log(u"BLUETIGERS TITLE TEMP: " + title, logger.DEBUG)                   
-                                download_url =   self.urls['base_url']  + "/" + link['href'] 
-                                download_url = download_url.replace("torrents-details","download")             
-                                logger.log(u"BLUETIGERS downloadURL: " + download_url, logger.DEBUG)
-        
-                                if not title or not download_url:
-                                   continue
-
-                                item = title, download_url
-                                logger.log(u"Found result: " + title.replace(' ','.') + " (" + download_url + ")", logger.DEBUG)
-
-                                items[mode].append(item)
-
-                except Exception, e:
-                    logger.log(u"Failed parsing " + self.name + " Traceback: " + traceback.format_exc(), logger.ERROR)
-
-            results += items[mode]
-
-        return results
-
-    def _get_title_and_url(self, item):
-
-        title, url = item
-
-        if title:
-            title = self._clean_title_from_provider(title)
-
-        if url:
-            url = str(url).replace('&amp;', '&')
-
-        return title, url
-
-    def findPropers(self, search_date=datetime.datetime.today()):
-
-        results = []
-
-        myDB = db.DBConnection()
-        sqlResults = myDB.select(
-            'SELECT s.show_name, e.showid, e.season, e.episode, e.status, e.airdate FROM tv_episodes AS e' +
-            ' INNER JOIN tv_shows AS s ON (e.showid = s.indexer_id)' +
-            ' WHERE e.airdate >= ' + str(search_date.toordinal()) +
-            ' AND (e.status IN (' + ','.join([str(x) for x in Quality.DOWNLOADED]) + ')' +
-            ' OR (e.status IN (' + ','.join([str(x) for x in Quality.SNATCHED]) + ')))'
-        )
-
-        if not sqlResults:
-            return []
-
-        for sqlshow in sqlResults:
-            self.show = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"]))
-            if self.show:
-                curEp = self.show.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"]))
-                searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK')
-
-                for item in self._doSearch(searchString[0]):
-                    title, url = self._get_title_and_url(item)
-                    results.append(classes.Proper(title, url, datetime.datetime.today(), self.show))
-
-        return results
-
-    def seedRatio(self):
-        return self.ratio
-
-
-class BLUETIGERSAuth(AuthBase):
-    """Attaches HTTP Authentication to the given Request object."""
-    def __init__(self, token):
-        self.token = token
-
-    def __call__(self, r):
-        r.headers['Authorization'] = self.token
-        return r
-
-
-class BLUETIGERSCache(tvcache.TVCache):
-    def __init__(self, provider):
-        tvcache.TVCache.__init__(self, provider)
-
-        # Only poll BLUETIGERS every 10 minutes max
-        self.minTime = 10
-
-    def _getRSSData(self):
-        search_params = {'RSS': ['']}
-        return {'entries': self.provider._doSearch(search_params)}
-
-
-provider = BLUETIGERSProvider()
diff --git a/sickbeard/providers/fnt.py b/sickbeard/providers/fnt.py
deleted file mode 100644
index 2cc56d925555e9284ec523fc4947d583e8ed3151..0000000000000000000000000000000000000000
--- a/sickbeard/providers/fnt.py
+++ /dev/null
@@ -1,300 +0,0 @@
-# -*- coding: latin-1 -*-
-# Author: raver2046 <raver2046@gmail.com> from djoole <bobby.djoole@gmail.com>  
-# URL: http://code.google.com/p/sickbeard/
-#
-# This file is part of Sick Beard.
-#
-# Sick Beard is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Sick Beard is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Sick Beard.  If not, see <http://www.gnu.org/licenses/>.
-
-import traceback
-import re
-import datetime
-import time
-from lib.requests.auth import AuthBase
-import sickbeard
-import generic
-import urllib
-from lib import requests
-from lib.requests import exceptions
-from sickbeard.bs4_parser import BS4Parser
-from sickbeard.common import Quality
-from sickbeard import logger
-from sickbeard import tvcache
-from sickbeard import show_name_helpers
-from sickbeard import db
-from sickbeard import helpers
-from sickbeard import classes
-from lib.unidecode import unidecode
-from sickbeard.helpers import sanitizeSceneName
-from sickbeard.exceptions import ex
-
-
-class FNTProvider(generic.TorrentProvider):
-    def __init__(self):
-        generic.TorrentProvider.__init__(self, "FNT")
-
-        self.supportsBacklog = True
-        self.enabled = False
-        self.username = None
-        self.password = None
-        self.ratio = None        
-        self.minseed = None
-        self.minleech = None
-
-        self.cache = FNTCache(self)
-
-        self.urls = {'base_url': 'https://fnt.nu',
-                     'search': 'https://www.fnt.nu/torrents/recherche/?afficher=1&recherche=%s%s',
-                     'login': 'https://fnt.nu/account-login.php',
-                     'download': 'https://fnt.nu/download.php?id=%s&dl=oui',
-        }
-
-        self.url = self.urls['base_url']
-        self.categories = "&afficher=1&c118=1&c129=1&c119=1&c120=1&c121=1&c126=1&c137=1&c138=1&c146=1&c122=1&c110=1&c109=1&c135=1&c148=1&c153=1&c149=1&c150=1&c154=1&c155=1&c156=1&c114=1&visible=1&freeleech=0&nuke=1&3D=0&sort=size&order=desc"
-
-    def isEnabled(self):
-        return self.enabled
-
-    def imageName(self):
-        return 'FNT.png'
-
-    def getQuality(self, item, anime=False):
-        quality = Quality.sceneQuality(item[0], anime)
-        return quality
-
-    def _doLogin(self):      
-
-
-        if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()):
-            return True
-
-        login_params = {'username': self.username,
-                            'password': self.password,
-                            'submit' : 'Se loguer'
-        }
-
-        if not self.session:
-            self.session = requests.Session()
-
-        logger.log('Performing authentication to FNT', logger.DEBUG)
-        try:
-            response = self.session.post(self.urls['login'], data=login_params, timeout=30)
-        except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError), e:
-            logger.log(u'Unable to connect to ' + self.name + ' provider: ' + ex(e), logger.ERROR)
-            return False
-
-        if re.search('/account-logout.php', response.text):
-            logger.log(u'Login to ' + self.name + ' was successful.', logger.DEBUG)
-            return True                
-        else:
-            logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.DEBUG)                
-            return False
-
-        return True
-
-    def _get_season_search_strings(self, ep_obj):
-
-        search_string = {'Season': []}
-        for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-            if ep_obj.show.air_by_date or ep_obj.show.sports:
-                ep_string = show_name + '.' + str(ep_obj.airdate).split('-')[0]
-            elif ep_obj.show.anime:
-                ep_string = show_name + '.' + "%d" % ep_obj.scene_absolute_number
-            else:
-                ep_string = show_name + '.S%02d' % int(ep_obj.scene_season)  # 1) showName.SXX
-
-            search_string['Season'].append(ep_string)
-
-        return [search_string]
-
-    def _get_episode_search_strings(self, ep_obj, add_string=''):
-
-        search_string = {'Episode': []}
-
-        if not ep_obj:
-            return []
-
-        if self.show.air_by_date:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = sanitizeSceneName(show_name) + '.' + \
-                            str(ep_obj.airdate).replace('-', '|')
-                search_string['Episode'].append(ep_string)
-        elif self.show.sports:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = sanitizeSceneName(show_name) + '.' + \
-                            str(ep_obj.airdate).replace('-', '|') + '|' + \
-                            ep_obj.airdate.strftime('%b')
-                search_string['Episode'].append(ep_string)
-        elif self.show.anime:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = sanitizeSceneName(show_name) + '.' + \
-                            "%i" % int(ep_obj.scene_absolute_number)
-                search_string['Episode'].append(ep_string)
-        else:
-            for show_name in set(show_name_helpers.allPossibleShowNames(self.show)):
-                ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \
-                            sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season,
-                                                                  'episodenumber': ep_obj.scene_episode} + ' %s' % add_string
-
-                search_string['Episode'].append(re.sub('\s+', '.', ep_string))
-
-        return [search_string]
-
-    def _doSearch(self, search_params, search_mode='eponly', epcount=0, age=0, epObj=None):
-
-        logger.log(u"_doSearch started with ..." + str(search_params), logger.DEBUG)
-
-        results = []
-        items = {'Season': [], 'Episode': [], 'RSS': []}
-
-        for mode in search_params.keys():
-            
-		
-            for search_string in search_params[mode]:
-
-                if isinstance(search_string, unicode):
-                    search_string = unidecode(search_string)
-
-                
-                searchURL = self.urls['search'] % (urllib.quote(search_string), self.categories)
-
-                logger.log(u"Search string: " + searchURL, logger.DEBUG)
-                   
-                
-                data = self.getURL(searchURL)
-                if not data:
-                    continue
-
-                try:
-                    with BS4Parser(data, features=["html5lib", "permissive"]) as html:
-                        result_table = html.find('table', {'id': 'tablealign3bis'})
-        
-                        if not result_table:
-                            logger.log(u"The Data returned from " + self.name + " do not contains any torrent",
-                                       logger.DEBUG)
-                            continue
-                        
-                        if result_table:
-                            rows = result_table.findAll("tr" , {"class" : "ligntorrent"} )
-        
-                            for row in rows:
-                                link = row.findAll('td')[1].find("a" , href=re.compile("fiche_film") )                                                         
-                                  
-                                if link:               
-                                   
-                                   try:                                                                       
-                                      title = link.text
-                                      logger.log(u"FNT TITLE : " + title, logger.DEBUG)                                                                                               
-                                      download_url = self.urls['base_url'] + "/" + row.find("a",href=re.compile("download\.php"))['href']                                                                     
-                                   except (AttributeError, TypeError):
-                                      continue
-
-                                   if not title or not download_url:
-                                      continue
-                                      
-                                   try:                                       
-                                      id = download_url.replace(self.urls['base_url'] + "/" + 'download.php?id=', '').replace('&amp;dl=oui', '').replace('&dl=oui', '')    
-                                      logger.log(u"FNT id du torrent  " + str(id), logger.DEBUG)            
-                                      defailseedleech = link['mtcontent']                                                                                                                
-                                      seeders =  int(defailseedleech.split("<font color='#00b72e'>")[1].split("</font>")[0]) 
-                                      logger.log(u"FNT seeders :  " + str(seeders), logger.DEBUG)
-                                      leechers = int(defailseedleech.split("<font color='red'>")[1].split("</font>")[0]) 
-                                      logger.log(u"FNT leechers :  " + str(leechers), logger.DEBUG)                                                                                                     
-                                   except:
-                                      logger.log(u"Unable to parse torrent id & seeders leechers  " + self.name + " Traceback: " + traceback.format_exc(), logger.DEBUG)
-                                      continue
-                                   
-                                   #Filter unseeded torrent
-                                   if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
-                                      continue
-                                 
-                                   item = title, download_url , id, seeders, leechers
-                                   logger.log(u"Found result: " + title.replace(' ','.') + " (" + download_url + ")", logger.DEBUG)
-
-                                   items[mode].append(item)
-
-                except Exception, e:
-                    logger.log(u"Failed parsing " + self.name + " Traceback: " + traceback.format_exc(), logger.ERROR)
-
-            results += items[mode]
-
-        return results
-
-    def _get_title_and_url(self, item):
-        
-        title, url, id, seeders, leechers = item
-
-        if title:
-            title = self._clean_title_from_provider(title)
-
-        if url:
-            url = str(url).replace('&amp;', '&')
-
-        return title, url
-
-    def findPropers(self, search_date=datetime.datetime.today()):
-
-        results = []
-
-        myDB = db.DBConnection()
-        sqlResults = myDB.select(
-            'SELECT s.show_name, e.showid, e.season, e.episode, e.status, e.airdate FROM tv_episodes AS e' +
-            ' INNER JOIN tv_shows AS s ON (e.showid = s.indexer_id)' +
-            ' WHERE e.airdate >= ' + str(search_date.toordinal()) +
-            ' AND (e.status IN (' + ','.join([str(x) for x in Quality.DOWNLOADED]) + ')' +
-            ' OR (e.status IN (' + ','.join([str(x) for x in Quality.SNATCHED]) + ')))'
-        )
-
-        if not sqlResults:
-            return []
-
-        for sqlshow in sqlResults:
-            self.show = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"]))
-            if self.show:
-                curEp = self.show.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"]))
-                searchString = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK')
-
-                for item in self._doSearch(searchString[0]):
-                    title, url = self._get_title_and_url(item)
-                    results.append(classes.Proper(title, url, datetime.datetime.today(), self.show))
-
-        return results
-
-    def seedRatio(self):
-        return self.ratio
-
-
-class FNTAuth(AuthBase):
-    """Attaches HTTP Authentication to the given Request object."""
-    def __init__(self, token):
-        self.token = token
-
-    def __call__(self, r):
-        r.headers['Authorization'] = self.token
-        return r
-
-
-class FNTCache(tvcache.TVCache):
-    def __init__(self, provider):
-        tvcache.TVCache.__init__(self, provider)
-
-        # Only poll FNT every 10 minutes max
-        self.minTime = 10
-
-    def _getRSSData(self):
-        search_params = {'RSS': ['']}
-        return {'entries': self.provider._doSearch(search_params)}
-
-
-provider = FNTProvider()