diff --git a/.dockerignore b/.dockerignore
index 81b77d2..9978ae9 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -3,4 +3,6 @@
 screenshot/
 tests/
 *.txt
-!/requirements.txt
\ No newline at end of file
+!/requirements.txt
+venv/
+
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
new file mode 100644
index 0000000..f7f9b82
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Report a bug in Sherlock's functionality
+title: ''
+labels: bug 
+assignees: ''
+
+---
+
+<!--
+
+######################################################################
+  WARNING!
+  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
+######################################################################
+
+-->
+
+
+## Checklist
+<!--
+Put x into all boxes (like this [x]) once you have completed what they say.
+Make sure complete everything in the checklist.
+-->
+
+- [ ] I'm reporting a bug in Sherlock's functionality
+- [ ] The bug I'm reporting is not a false positive or a false negative
+- [ ] I've verified that I'm running the latest version of Sherlock
+- [ ] I've checked for similar bug reports including closed ones
+- [ ] I've checked for pull requests that attempt to fix this bug
+
+## Description
+<!--
+Provide a detailed description of the bug that you have found in Sherlock.
+Provide the version of Sherlock you are running.
+-->
+
+WRITE DESCRIPTION HERE
diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md
new file mode 100644
index 0000000..67ec7ec
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.md
@@ -0,0 +1,32 @@
+---
+name: Feature request
+about: Request a new functionality for Sherlock
+title: ''
+labels: enhancement
+assignees: ''
+
+---
+
+<!--
+
+######################################################################
+  WARNING!
+  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
+######################################################################
+
+-->
+
+## Checklist
+<!--
+Put x into all boxes (like this [x]) once you have completed what they say.
+Make sure complete everything in the checklist.
+-->
+- [ ] I'm reporting a feature request
+- [ ] I've checked for similar feature requests including closed ones
+
+## Description
+<!-- 
+Provide a detailed description of the feature you would like Sherlock to have
+-->
+
+WRITE DESCRIPTION HERE
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
new file mode 100644
index 0000000..b8a0db3
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -0,0 +1,33 @@
+---
+name: Question
+about: Ask us a question
+title: ''
+labels: question
+assignees: ''
+
+---
+
+<!--
+
+######################################################################
+  WARNING!
+  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE.
+######################################################################
+
+-->
+
+## Checklist
+<!--
+Put x into all boxes (like this [x]) once you have completed what they say.
+Make sure complete everything in the checklist.
+-->
+- [ ] I'm asking a question regarding Sherlock
+- [ ] My question is not a tech support question.
+
+**We are not your tech support**. 
+If you have questions related to `pip`, `git`, or something that is not related to Sherlock, please ask them on [StackOverflow](https://stackoverflow.com/) or [r/learnpython](https://www.reddit.com/r/learnpython/)
+
+
+## Question
+
+ASK YOUR QUESTION HERE
diff --git a/.github/ISSUE_TEMPLATE/reporting-false-negative.md b/.github/ISSUE_TEMPLATE/reporting-false-negative.md
new file mode 100644
index 0000000..82ba13d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/reporting-false-negative.md
@@ -0,0 +1,34 @@
+---
+name: Reporting false negative
+about: Reporting a site that is returning false positives
+title: ''
+labels: false negative 
+assignees: ''
+
+---
+
+<!--
+
+######################################################################
+  WARNING!
+  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
+######################################################################
+
+-->
+
+## Checklist
+<!--
+Put x into all boxes (like this [x]) once you have completed what they say.
+Make sure complete everything in the checklist.
+-->
+- [ ] I'm reporting a website that is returning **false negative** results
+- [ ] I've checked for similar site support requests including closed ones
+- [ ] I've checked for pull requests attempting to fix this false negative
+- [ ] I'm only reporting **one** site (create a seperate issue for each site)
+
+## Description
+<!--
+Provide the username that is causing Sherlock to return a false negative, along with any other information that might help us fix this false negative.
+-->
+
+WRITE DESCRIPTION HERE
diff --git a/.github/ISSUE_TEMPLATE/reporting-false-positive.md b/.github/ISSUE_TEMPLATE/reporting-false-positive.md
new file mode 100644
index 0000000..045f66f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/reporting-false-positive.md
@@ -0,0 +1,34 @@
+---
+name: Reporting false positive
+about: Reporting a site that is returning false positives
+title: ''
+labels: false positive 
+assignees: ''
+
+---
+
+<!--
+
+######################################################################
+  WARNING!
+  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
+######################################################################
+
+-->
+
+## Checklist
+<!--
+Put x into all boxes (like this [x]) once you have completed what they say.
+Make sure complete everything in the checklist.
+-->
+- [ ] I'm reporting a website that is returning **false positive** results
+- [ ] I've checked for similar site support requests including closed ones
+- [ ] I've checked for pull requests attempting to fix this false positive
+- [ ] I'm only reporting **one** site (create a seperate issue for each site)
+
+## Description
+<!--
+Provide the username that is causing Sherlock to return a false positive, along with any other information that might help us fix this false positive.
+-->
+
+WRITE DESCRIPTION HERE
diff --git a/.github/ISSUE_TEMPLATE/site-support-request.md b/.github/ISSUE_TEMPLATE/site-support-request.md
new file mode 100644
index 0000000..4b3305a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/site-support-request.md
@@ -0,0 +1,37 @@
+---
+name: Site support request
+about: Request support for a new site
+title: ''
+labels: site support request
+assignees: ''
+
+---
+
+<!--
+
+######################################################################
+  WARNING!
+  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
+######################################################################
+
+-->
+
+## Checklist
+<!--
+Put x into all boxes (like this [x]) once you have completed what they say.
+Make sure complete everything in the checklist.
+-->
+
+- [ ] I'm requesting support for a new site
+- [ ] I've checked for similar site support requests including closed ones
+- [ ] I've checked that the site I am requesting has not been removed in the past and is not documented in [removed_sites.md](https://github.com/sherlock-project/sherlock/blob/master/removed_sites.md)
+- [ ] The site I am requesting support for is not a pornographic website
+- [ ] I'm only requesting support of **one** website (create a seperate issue for each site)
+
+## Description
+<!--
+Provide the url to the website and the name of the website.
+If there is anything else you want to mention regarding the site support request include that in this section.
+-->
+
+URL:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..35df820
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,33 @@
+name: Tests
+
+on:
+  push:
+    branches: [ master ]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        python-version: [3.6, 3.7, 3.8]
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v1
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Install Dependencies
+      run: |
+        python -m pip install --upgrade pip
+        pip install flake8 pytest
+        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
+    - name: Lint with flake8
+      run: |
+        # stop the build if there are Python syntax errors or undefined names
+        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
+        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
+        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
+    - name: Sherlock Site Detect Tests
+      run: |
+        cd sherlock && python -m unittest tests.all.SherlockDetectTests --verbose
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
new file mode 100644
index 0000000..6bb5869
--- /dev/null
+++ b/.github/workflows/nightly.yml
@@ -0,0 +1,27 @@
+name: Nightly
+
+on:
+  schedule:
+    # Run Nightly Tests At 3AM (The Hour Of The Wolf) Every Day
+    - cron:  '0 3 * * *'
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        python-version: [3.6]
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v1
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Install Dependencies
+      run: |
+        python -m pip install --upgrade pip
+        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
+    - name: Sherlock Site Coverage Tests
+      run: |
+        cd sherlock && python -m unittest tests.all.SherlockSiteCoverageTests --verbose
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
new file mode 100644
index 0000000..b0425ff
--- /dev/null
+++ b/.github/workflows/pull_request.yml
@@ -0,0 +1,48 @@
+name: Pull Request Action
+
+on:
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  getchange:
+    runs-on: ubuntu-latest
+    outputs:
+      matrix: ${{ steps.changes.outputs.matrix }}
+    steps:
+      - id: changes
+        run: |
+          URL="https://api.github.com/repos/sherlock-project/sherlock/pulls/${{ github.event.pull_request.number }}/files"
+          FILES=$(curl -s -X GET -G $URL | jq -r '.[] | .filename')
+          if echo $FILES | grep -q ".json"; then
+            echo "::set-output name=matrix::{\"include\":[{\"python\":\"3.8\"}]}"
+          else
+            echo "::set-output name=matrix::{\"include\":[{\"python\":\"3.6\" },{\"python\":\"3.7\"},{\"python\":\"3.8\"}]}"
+          fi
+  build:
+    needs: [getchange]
+    runs-on: ubuntu-latest
+    strategy:
+      matrix: ${{ fromJson(needs.getchange.outputs.matrix) }}
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python ${{ matrix.python }}
+      uses: actions/setup-python@v1
+      with:
+        python-version: ${{ matrix.python }}
+    - name: Install Dependencies
+      run: |
+        python -m pip install --upgrade pip
+        pip install flake8 pytest
+        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
+    - name: Lint With flake8
+      run: |
+        # stop the build if there are Python syntax errors or undefined names
+        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
+
+        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
+        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
+    - name: Sherlock Site Detect Tests
+      run: |
+        cd sherlock && python -m unittest tests.all.SherlockDetectTests --verbose
diff --git a/.gitignore b/.gitignore
index 03c3fad..1f0eb5c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,9 @@ venv/
 # Python
 __pycache__/
 
+# Pip
+src/
+
 # Jupyter Notebook
 .ipynb_checkpoints
 *.ipynb
@@ -18,3 +21,12 @@ __pycache__/
 
 # Comma-Separated Values (CSV) Reports
 *.csv
+
+# Excluded sites list
+tests/.excluded_sites
+
+# MacOS Folder Metadata File
+.DS_Store
+
+# Vim swap files
+*.swp
diff --git a/.replit b/.replit
new file mode 100644
index 0000000..fc2fa36
--- /dev/null
+++ b/.replit
@@ -0,0 +1,2 @@
+language = "python3"
+run = ""
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index ff7102d..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-group: travis_latest
-language: python
-cache: pip
-matrix:
-  allow_failures:
-    - python: nightly
-    - name: "Sherlock Site Coverage Tests"
-  fast_finish: true
-  include:
-    - python: 3.6
-    - python: 3.7
-    - python: 3.8
-    - python: nightly
-    - python: 3.7
-      before_script: true  # override the flake8 tests
-      name: "Sherlock Site Coverage Tests"
-      script: python -m unittest tests.all.SherlockSiteCoverageTests --buffer --verbose
-install:
-  - pip install flake8 -r requirements.txt
-before_script:
-  # stop the build if there are Python syntax errors or undefined names
-  - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
-  # exit-zero treats all errors as warnings.  The GitHub editor is 127 chars wide
-  - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
-script:
-  - python -m unittest tests.all.SherlockDetectTests --buffer --verbose || true
-notifications:
-  on_success: change
-  on_failure: change  # `always` will be the setting once code changes slow down
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d933b6c..8c8f712 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -26,8 +26,8 @@ the site may be removed from the list.  The
 file contains sites that were included at one time in Sherlock, but had to be removed for
 one reason or another.
 
-In regards to adult sites (e.g. PornHub), we have agreed to not include them in Sherlock.  
-However, we do understand that some users desires this support.  The data.json file is easy to add to, 
+In regards to adult sites (e.g. Pornhub), we have agreed to not include them in Sherlock.  
+However, we do understand that some users desire this support.  The data.json file is easy to add to, 
 so users will be able to maintain their own forks to have this support. This is not ideal.  
 Maybe there could be another repo with an adult data.json? That would avoid forks getting out of date.
 
diff --git a/Dockerfile b/Dockerfile
index 1592466..911fe69 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,9 @@
 FROM python:3.7-alpine as build
 WORKDIR /wheels
-RUN apk update --no-cache \
-  && apk add --no-cache \
+RUN apk add --no-cache \
     g++ \
     gcc \
+    git \
     libxml2 \
     libxml2-dev \
     libxslt-dev \
@@ -23,5 +23,6 @@ COPY . /opt/sherlock/
 RUN pip3 install -r requirements.txt -f /wheels \
   && rm -rf /wheels \
   && rm -rf /root/.cache/pip/*
+WORKDIR /opt/sherlock/sherlock
 
 ENTRYPOINT ["python", "sherlock.py"]
diff --git a/LICENSE b/LICENSE
index f6193a9..6830659 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2018 Siddharth Dushantha
+Copyright (c) 2019 Sherlock Project
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 06395e6..1f64f53 100644
--- a/README.md
+++ b/README.md
@@ -3,73 +3,62 @@
   <img src="https://user-images.githubusercontent.com/27065646/53551960-ae4dff80-3b3a-11e9-9075-cef786c69364.png"/>
 
   <br>
-  <span>Hunt down social media accounts by username across <a href="https://github.com/theyahya/sherlock/blob/master/sites.md">social networks</a></span>
+  <span>Hunt down social media accounts by username across <a href="https://github.com/sherlock-project/sherlock/blob/master/sites.md">social networks</a></span>
   <br>
   <a target="_blank" href="https://www.python.org/downloads/" title="Python version"><img src="https://img.shields.io/badge/python-%3E=_3.6-green.svg"></a>
   <a target="_blank" href="LICENSE" title="License: MIT"><img src="https://img.shields.io/badge/License-MIT-blue.svg"></a>
-  <a target="_blank" href="https://travis-ci.com/TheYahya/sherlock/" title="Build Status"><img src="https://travis-ci.com/TheYahya/sherlock.svg?branch=master"></a>
-  <a target="_blank" href="https://twitter.com/intent/tweet?text=%F0%9F%94%8E%20Find%20usernames%20across%20social%20networks%20&url=https://github.com/TheYahya/sherlock&hashtags=hacking,%20osint,%20bugbounty,%20reconnaissance" title="Share on Tweeter"><img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"></a>
+  <a target="_blank" href="https://github.com/sherlock-project/sherlock/actions" title="Test Status"><img src="https://github.com/sherlock-project/sherlock/workflows/Tests/badge.svg?branch=master"></a>
+  <a target="_blank" href="https://github.com/sherlock-project/sherlock/actions" title="Nightly Tests"><img src="https://github.com/sherlock-project/sherlock/workflows/Nightly/badge.svg?branch=master"></a>
+  <a target="_blank" href="https://twitter.com/intent/tweet?text=%F0%9F%94%8E%20Find%20usernames%20across%20social%20networks%20&url=https://github.com/sherlock-project/sherlock&hashtags=hacking,%20osint,%20bugbounty,%20reconnaissance" title="Share on Twitter"><img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"></a>
   <a target="_blank" href="http://sherlock-project.github.io/"><img alt="Website" src="https://img.shields.io/website-up-down-green-red/http/sherlock-project.github.io/..svg"></a>
   <a target="_blank" href="https://microbadger.com/images/theyahya/sherlock"><img alt="docker image" src="https://images.microbadger.com/badges/version/theyahya/sherlock.svg"></a>
 </p>
 
 <p align="center">
-  <a href="#demo">Demo</a>
-  &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
   <a href="#installation">Installation</a>
   &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
   <a href="#usage">Usage</a>
   &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
   <a href="#docker-notes">Docker Notes</a>
   &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
-  <a href="#adding-new-sites">Adding New Sites</a>
+  <a href="#contributing">Contributing</a>
 </p>
 
 <p align="center">
 <a href="https://asciinema.org/a/223115">
-<img src="./images/sherlock_preview.gif"/>
+<img src="./images/sherlock_demo.gif"/>
 </a>
 </p>
 
 
-
-
-## Demo
-
-Use this link to test Sherlock directly in your browser:
-https://elody.com/scenario/plan/16/
-
 ## Installation
 
-**NOTE**: Python 3.6 or higher is required.
-
-```bash
+```console
 # clone the repo
 $ git clone https://github.com/sherlock-project/sherlock.git
 
 # change the working directory to sherlock
 $ cd sherlock
 
-# install python3 and python3-pip if they are not installed
-
 # install the requirements
 $ python3 -m pip install -r requirements.txt
 ```
-[![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.png)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/sherlock-project/sherlock&tutorial=README.md)
+
+
+[![Open in Cloud Shell](https://user-images.githubusercontent.com/27065646/92304704-8d146d80-ef80-11ea-8c29-0deaabb1c702.png)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/sherlock-project/sherlock&tutorial=README.md) [![Run on Repl.it](https://user-images.githubusercontent.com/27065646/92304596-bf719b00-ef7f-11ea-987f-2c1f3c323088.png)](https://repl.it/github/sherlock-project/sherlock)
 
 ## Usage
 
-```bash
-$ python3 sherlock.py --help
-usage: sherlock.py [-h] [--version] [--verbose] [--rank]
-                   [--folderoutput FOLDEROUTPUT] [--output OUTPUT] [--tor]
-                   [--unique-tor] [--csv] [--site SITE_NAME]
-                   [--proxy PROXY_URL] [--json JSON_FILE]
-                   [--proxy_list PROXY_LIST] [--check_proxies CHECK_PROXY]
-                   [--print-found]
-                   USERNAMES [USERNAMES ...]
+```console
+$ python3 sherlock --help
+usage: sherlock [-h] [--version] [--verbose] [--folderoutput FOLDEROUTPUT]
+                [--output OUTPUT] [--tor] [--unique-tor] [--csv]
+                [--site SITE_NAME] [--proxy PROXY_URL] [--json JSON_FILE]
+                [--timeout TIMEOUT] [--print-all] [--print-found] [--no-color]
+                [--browse] [--local]
+                USERNAMES [USERNAMES ...]
 
-Sherlock: Find Usernames Across Social Networks (Version 0.9.6)
+Sherlock: Find Usernames Across Social Networks (Version 0.12.9)
 
 positional arguments:
   USERNAMES             One or more usernames to check with social networks.
@@ -79,8 +68,6 @@ optional arguments:
   --version             Display version information and dependencies.
   --verbose, -v, -d, --debug
                         Display extra debugging information and metrics.
-  --rank, -r            Present websites ordered by their Alexa.com global
-                        rank in popularity.
   --folderoutput FOLDEROUTPUT, -fo FOLDEROUTPUT
                         If using multiple usernames, the output of the results
                         will be saved to this folder.
@@ -101,35 +88,36 @@ optional arguments:
   --json JSON_FILE, -j JSON_FILE
                         Load data from a JSON file or an online, valid, JSON
                         file.
-  --proxy_list PROXY_LIST, -pl PROXY_LIST
-                        Make requests over a proxy randomly chosen from a list
-                        generated from a .csv file.
-  --check_proxies CHECK_PROXY, -cp CHECK_PROXY
-                        To be used with the '--proxy_list' parameter. The
-                        script will check if the proxies supplied in the .csv
-                        file are working and anonymous.Put 0 for no limit on
-                        successfully checked proxies, or another number to
-                        institute a limit.
-  --print-found         Do not output sites where the username was not found.
-
+  --timeout TIMEOUT     Time (in seconds) to wait for response to requests.
+                        Default timeout is infinity. A longer timeout will be
+                        more likely to get results from slow sites. On the
+                        other hand, this may cause a long delay to gather all
+                        results.
+  --print-all           Output sites where the username was not found.
+  --print-found         Output sites where the username was found.
+  --no-color            Don't color terminal output
+  --browse, -b          Browse to all results on default browser.
+  --local, -l           Force the use of the local data.json file.
 ```
 
 To search for only one user:
 ```
-python3 sherlock.py user123
+python3 sherlock user123
 ```
 
 To search for more than one user:
 ```
-python3 sherlock.py user1 user2 user3
+python3 sherlock user1 user2 user3
 ```
 
 Accounts found will be stored in an individual text file with the corresponding username (e.g ```user123.txt```).
 
 ## Anaconda (Windows) Notes
+
 If you are using Anaconda in Windows, using 'python3' might not work. Use 'python' instead.
 
 ## Docker Notes
+
 If docker is installed you can build an image and run this as a container.
 
 ```
@@ -152,7 +140,7 @@ Use the following command to access the saved results:
 docker run --rm -t -v "$PWD/results:/opt/sherlock/results" mysherlock-image -o /opt/sherlock/results/text.txt user123
 ```
 
-The ```-v "$PWD/results:/opt/sherlock/results"``` option tells docker to create (or use) the folder `results` in the
+The ```-v "$PWD/results:/opt/sherlock/results"``` options tell docker to create (or use) the folder `results` in the
 present working directory and to mount it at `/opt/sherlock/results` on the docker container.
 The `-o /opt/sherlock/results/text.txt` option tells `sherlock` to output the result.
 
@@ -166,18 +154,22 @@ docker run theyahya/sherlock user123
 You can use the `docker-compose.yml` file from the repository and use this command:
 
 ```
-docker-compose run sherlok -o /opt/sherlock/results/text.txt user123
+docker-compose run sherlock -o /opt/sherlock/results/text.txt user123
 ```
 
-## Adding New Sites
+## Contributing
+We would love to have you help us with the development of Sherlock. Each and every contribution is greatly valued!
 
-Please look at the Wiki entry on
-[adding new sites](https://github.com/TheYahya/sherlock/wiki/Adding-Sites-To-Sherlock)
-to understand the issues.
+Here are some things we would appreciate your help on:
+- Addition of new site support ¹
+- Bringing back site support of [sites that have been removed](removed_sites.md) in the past due to false positives
 
-**NOTE**: Sherlock is not accepting adult sites in the standard list.
+
+[1] Please look at the Wiki entry on [adding new sites](https://github.com/sherlock-project/sherlock/wiki/Adding-Sites-To-Sherlock)
+to understand the issues.
 
 ## Tests
+
 Thank you for contributing to Sherlock!
 
 Before creating a pull request with new development, please run the tests
@@ -190,12 +182,18 @@ Sherlock.  This invocation hides the progress text that Sherlock normally
 outputs, and instead shows the verbose output of the tests.
 
 ```
-$ python3 -m unittest tests.all --buffer --verbose
+$ cd sherlock/sherlock
+$ python3 -m unittest tests.all --verbose
 ```
 
 Note that we do currently have 100% test coverage.  Unfortunately, some of
 the sites that Sherlock checks are not always reliable, so it is common
-to get response errors.
+to get response problems.  Any problems in connection will show up as
+warnings in the tests instead of true errors.
+
+If some sites are failing due to connection problems (site is down, in maintenance, etc)
+you can exclude them from tests by creating a `tests/.excluded_sites` file with a
+list of sites to ignore (one site name per line).
 
 ## Stargazers over time
 
@@ -203,5 +201,5 @@ to get response errors.
 
 ## License
 
-MIT © [Yahya SayadArbabi](https://theyahya.com)<br/>
+MIT © Sherlock Project<br/>
 Original Creator - [Siddharth Dushantha](https://github.com/sdushantha)
diff --git a/data_bad_site.json b/data_bad_site.json
deleted file mode 100644
index c82efba..0000000
--- a/data_bad_site.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
-  "AngelList": {
-    "errorType": "status_code",
-    "rank": 5767,
-    "url": "https://angel.co/{}",
-    "urlMain": "https://angel.co/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "BlackPlanet": {
-    "errorMsg": "My Hits",
-    "errorType": "message",
-    "rank": 110021,
-    "url": "http://blackplanet.com/{}",
-    "urlMain": "http://blackplanet.com/"
-  },
-  "Codepen": {
-    "errorType": "status_code",
-    "rank": 1359,
-    "url": "https://codepen.io/{}",
-    "urlMain": "https://codepen.io/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Duolingo": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.duolingo.com/errors/404.html",
-    "rank": 538,
-    "regexCheck": "^[a-zA-Z0-9_-]{3,16}$",
-    "url": "https://www.duolingo.com/{}",
-    "urlMain": "https://www.duolingo.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewoulduse"
-  },
-  "EVE Online": {
-    "errorType": "response_url",
-    "errorUrl": "https://eveonline.com",
-    "rank": 15347,
-    "url": "https://evewho.com/pilot/{}/",
-    "urlMain": "https://eveonline.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Fotolog": {
-    "errorType": "status_code",
-    "rank": 47777,
-    "url": "https://fotolog.com/{}",
-    "urlMain": "https://fotolog.com/"
-  },
-  "Foursquare": {
-    "errorType": "status_code",
-    "rank": 1843,
-    "url": "https://foursquare.com/{}",
-    "urlMain": "https://foursquare.com/",
-    "username_claimed": "dens",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Furaffinity": {
-    "errorMsg": "Fatal system error",
-    "errorType": "message",
-    "rank": 4278,
-    "url": "https://www.furaffinity.net/user/{}",
-    "urlMain": "https://www.furaffinity.net",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Imgur": {
-    "errorType": "status_code",
-    "rank": 74,
-    "url": "https://imgur.com/user/{}",
-    "urlMain": "https://imgur.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Khan Academy": {
-    "errorType": "status_code",
-    "rank": 377,
-    "url": "https://www.khanacademy.org/profile/{}",
-    "urlMain": "https://www.khanacademy.org/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "linkedin.com": {
-    "errorMsg": "This profile is not available",
-    "errorType": "message",
-    "rank": 0,
-    "url": "https://www.linkedin.com/in/{}",
-    "urlMain": "https://www.linkedin.com/",
-    "username_claimed": "alex",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "PayPal": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.paypal.com/paypalme2/404",
-    "rank": 18441,
-    "url": "https://www.paypal.com/paypalme2/{}",
-    "urlMain": "https://www.paypal.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noneownsthisusername"
-  },
-  "PowerShell Gallery": {
-    "errorType": "status_code",
-    "rank": 163562,
-    "url": "https://www.powershellgallery.com/profiles/{}",
-    "urlMain": "https://www.powershellgallery.com",
-    "username_claimed": "powershellteam",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Shockwave": {
-    "errorMsg": "Oh no! You just finished all of the games on the internet!",
-    "errorType": "message",
-    "rank": 35916,
-    "url": "http://www.shockwave.com/member/profiles/{}.jsp",
-    "urlMain": "http://www.shockwave.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "StreamMe": {
-    "errorType": "status_code",
-    "rank": 31702,
-    "url": "https://www.stream.me/{}",
-    "urlMain": "https://www.stream.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  }
-}
diff --git a/docker-compose.yml b/docker-compose.yml
index e7e97c4..3182120 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,4 +1,5 @@
 version: '2'
+
 services:
   sherlock:
     build: .
diff --git a/images/sherlock_demo.gif b/images/sherlock_demo.gif
new file mode 100644
index 0000000..b9417bc
Binary files /dev/null and b/images/sherlock_demo.gif differ
diff --git a/images/sherlock_preview.gif b/images/sherlock_preview.gif
deleted file mode 100644
index cdb2790..0000000
Binary files a/images/sherlock_preview.gif and /dev/null differ
diff --git a/install_packages.sh b/install_packages.sh
deleted file mode 100755
index 5b86773..0000000
--- a/install_packages.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-
-# Determine which is the default package manager
-APT=$(which apt)
-PACMAN=$(which pacman)
-DNF=$(which dnf)
-YUM=$(which yum)
-ZYPPER=$(which zypper)
-
-# install python3 and pip3 if not exist
-if [ ${#APT} -gt 0 ]; then
-    sudo apt-get install python3
-    sudo apt-get install python3-pip
-elif [ ${#PACMAN} -gt 0 ]; then
-    sudo pacman -S python3
-    sudo pacman -S python3-pip
-elif [ ${#DNF} -gt 0 ]; then
-    sudo dnf install python3
-    sudo dnf install python3-pip
-elif [ ${#YUM} -gt 0 ]; then
-    sudo yum install python3
-    sudo yum install python3-pip
-elif [ ${#ZYPPER} -gt 0 ]; then
-    sudo zypper install python3
-    sudo zypper install python3-pip
-else
-    echo "Unknown package manager. Download one of the following:"
-    echo "  apt, pacman, dnf, yum or zypper"
-    echo ""
-    echo "or use README.md for instructions."
-    exit 1
-fi
-
-    
-# install the all the necessary packages and requirements
-echo ''
-echo ''
-while true; do
-    echo 'Do you want dependencies to be installed globally (or locally) [Y/n]?'
-    read ans
-    if [[ ${#ans} -eq 0 || $ans = "Y" || $ans = "y" ]]; then
-        sudo pip3 install --upgrade setuptools
-        sudo pip3 install -r requirements.txt
-    elif [[ $ans = "N" || $ans = "n" ]]; then
-        sudo pip3 install --user --upgrade setuptools
-        sudo pip3 install --user -r requirements.txt
-    fi
-
-    [[ ${#ans} -eq 0 || $ans = "Y" || $ans = "y" || $ans = "N" || $ans = "n" ]] && break;
-done
-
diff --git a/load_proxies.py b/load_proxies.py
deleted file mode 100644
index d8a0a91..0000000
--- a/load_proxies.py
+++ /dev/null
@@ -1,89 +0,0 @@
-import csv
-import requests
-import time
-from collections import namedtuple
-from colorama import Fore, Style
-
-
-def load_proxies_from_csv(path_to_list):
-    """
-    A function which loads proxies from a .csv file, to a list.
-
-    Inputs: path to .csv file which contains proxies, described by fields: 'ip', 'port', 'protocol'.
-
-    Outputs: list containing proxies stored in named tuples.
-    """
-    Proxy = namedtuple('Proxy', ['ip', 'port', 'protocol'])
-
-    with open(path_to_list, 'r') as csv_file:
-        csv_reader = csv.DictReader(csv_file)
-        proxies = [Proxy(line['ip'],line['port'],line['protocol']) for line in csv_reader]
-
-    return proxies
-
-
-def check_proxy(proxy_ip, proxy_port, protocol):
-    """
-    A function which test the proxy by attempting
-    to make a request to the designated website.
-
-    We use 'wikipedia.org' as a test, since we can test the proxy anonymity
-    by check if the returning 'X-Client-IP' header matches the proxy ip.
-    """
-    full_proxy = f'{protocol}://{proxy_ip}:{proxy_port}'
-    proxies = {'http': full_proxy, 'https': full_proxy}
-    try:
-        r = requests.get('https://www.wikipedia.org',proxies=proxies, timeout=4)
-        return_proxy = r.headers['X-Client-IP']
-        if proxy_ip==return_proxy:
-            return True
-        else:
-            return False
-    except Exception:
-        return False
-
-
-def check_proxy_list(proxy_list, max_proxies=None):
-    """
-    A function which takes in one mandatory argument -> a proxy list in
-    the format returned by the function 'load_proxies_from_csv'.
-
-    It also takes an optional argument 'max_proxies', if the user wishes to
-    cap the number of validated proxies.
-
-    Each proxy is tested by the check_proxy function. Since each test is done on
-    'wikipedia.org', in order to be considerate to Wikipedia servers, we are not using any async modules,
-    but are sending successive requests each separated by at least 1 sec.
-
-    Outputs: list containing proxies stored in named tuples.
-    """
-    print((Style.BRIGHT + Fore.GREEN + "[" +
-           Fore.YELLOW + "*" +
-           Fore.GREEN + "] Started checking proxies."))
-    working_proxies = []
-
-    # If the user has limited the number of proxies we need,
-    # the function will stop when the working_proxies
-    # loads the max number of requested proxies.
-    if max_proxies != None:
-        for proxy in proxy_list:
-            if len(working_proxies) < max_proxies:
-                time.sleep(1)
-                if check_proxy(proxy.ip,proxy.port,proxy.protocol) == True:
-                    working_proxies.append(proxy)
-            else:
-                break
-    else:
-        for proxy in proxy_list:
-            time.sleep(1)
-            if check_proxy(proxy.ip,proxy.port,proxy.protocol) == True:
-                working_proxies.append(proxy)
-
-    if len(working_proxies) > 0:
-        print((Style.BRIGHT + Fore.GREEN + "[" +
-               Fore.YELLOW + "*" +
-               Fore.GREEN + "] Finished checking proxies."))
-        return working_proxies
-
-    else:
-        raise Exception("Found no working proxies.")
diff --git a/removed_sites.json b/removed_sites.json
new file mode 100644
index 0000000..9c7db17
--- /dev/null
+++ b/removed_sites.json
@@ -0,0 +1,491 @@
+{
+  "AdobeForums": {
+    "errorType": "status_code",
+    "rank": 59,
+    "url": "https://forums.adobe.com/people/{}",
+    "urlMain": "https://forums.adobe.com/",
+    "username_claimed": "jack",
+    "username_unclaimed": "noonewouldeverusethis77777"
+  },
+  "AngelList": {
+    "errorType": "status_code",
+    "rank": 5767,
+    "url": "https://angel.co/u/{}",
+    "urlMain": "https://angel.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Basecamp": {
+    "errorMsg": "The account you were looking for doesn't exist",
+    "errorType": "message",
+    "rank": 4914,
+    "url": "https://{}.basecamphq.com",
+    "urlMain": "https://basecamp.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "BlackPlanet": {
+    "errorMsg": "My Hits",
+    "errorType": "message",
+    "rank": 110021,
+    "url": "http://blackplanet.com/{}",
+    "urlMain": "http://blackplanet.com/"
+  },
+  "Canva": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.canva.com/{}",
+    "rank": 128,
+    "url": "https://www.canva.com/{}",
+    "urlMain": "https://www.canva.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "xgtrq"
+  },
+  "Codementor": {
+    "errorType": "status_code",
+    "rank": 10252,
+    "url": "https://www.codementor.io/@{}",
+    "urlMain": "https://www.codementor.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "EVE Online": {
+    "errorType": "response_url",
+    "errorUrl": "https://eveonline.com",
+    "rank": 15347,
+    "url": "https://evewho.com/pilot/{}/",
+    "urlMain": "https://eveonline.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "fanpop": {
+    "errorType": "response_url",
+    "errorUrl": "http://www.fanpop.com/",
+    "rank": 9454,
+    "url": "http://www.fanpop.com/fans/{}",
+    "urlMain": "http://www.fanpop.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewould_everusethis7"
+  },
+  "Fotolog": {
+    "errorType": "status_code",
+    "rank": 47777,
+    "url": "https://fotolog.com/{}",
+    "urlMain": "https://fotolog.com/"
+  },
+  "Foursquare": {
+    "errorType": "status_code",
+    "rank": 1843,
+    "url": "https://foursquare.com/{}",
+    "urlMain": "https://foursquare.com/",
+    "username_claimed": "dens",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "furaffinity": {
+    "errorMsg": "user cannot be found",
+    "errorType": "message",
+    "rank": 0,
+    "url": "https://www.furaffinity.net/user/{}",
+    "urlMain": "https://www.furaffinity.net",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis777777"
+  },
+  "gpodder.net": {
+    "errorType": "status_code",
+    "rank": 2013984,
+    "url": "https://gpodder.net/user/{}",
+    "urlMain": "https://gpodder.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Investing.com": {
+    "errorType": "status_code",
+    "rank": 196,
+    "url": "https://www.investing.com/traders/{}",
+    "urlMain": "https://www.investing.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Khan Academy": {
+    "errorType": "status_code",
+    "rank": 377,
+    "url": "https://www.khanacademy.org/profile/{}",
+    "urlMain": "https://www.khanacademy.org/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "KiwiFarms": {
+    "errorMsg": "The specified member cannot be found",
+    "errorType": "message",
+    "rank": 38737,
+    "url": "https://kiwifarms.net/members/?username={}",
+    "urlMain": "https://kiwifarms.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Linkedin": {
+    "errorMsg": "could not be found",
+    "errorType": "message",
+    "rank": 0,
+    "url": "https://www.linkedin.com/in/{}",
+    "urlMain": "https://www.linkedin.com/",
+    "username_claimed": "alex",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "NPM-Package": {
+    "errorType": "status_code",
+    "url": "https://www.npmjs.com/package/{}",
+    "urlMain": "https://www.npmjs.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Pexels": {
+    "errorType": "status_code",
+    "rank": 745,
+    "url": "https://www.pexels.com/@{}",
+    "urlMain": "https://www.pexels.com/",
+    "username_claimed": "bruno",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Pixabay": {
+    "errorType": "status_code",
+    "rank": 378,
+    "url": "https://pixabay.com/en/users/{}",
+    "urlMain": "https://pixabay.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "PowerShell Gallery": {
+    "errorType": "status_code",
+    "rank": 163562,
+    "url": "https://www.powershellgallery.com/profiles/{}",
+    "urlMain": "https://www.powershellgallery.com",
+    "username_claimed": "powershellteam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "RamblerDating": {
+    "errorType": "response_url",
+    "errorUrl": "https://dating.rambler.ru/page/{}",
+    "rank": 322,
+    "url": "https://dating.rambler.ru/page/{}",
+    "urlMain": "https://dating.rambler.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Shockwave": {
+    "errorMsg": "Oh no! You just finished all of the games on the internet!",
+    "errorType": "message",
+    "rank": 35916,
+    "url": "http://www.shockwave.com/member/profiles/{}.jsp",
+    "urlMain": "http://www.shockwave.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "StreamMe": {
+    "errorType": "status_code",
+    "rank": 31702,
+    "url": "https://www.stream.me/{}",
+    "urlMain": "https://www.stream.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Teknik": {
+    "errorMsg": "The user does not exist",
+    "errorType": "message",
+    "rank": 357163,
+    "url": "https://user.teknik.io/{}",
+    "urlMain": "https://teknik.io/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "YandexMarket": {
+    "errorMsg": "\u0422\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442",
+    "errorType": "message",
+    "rank": 47,
+    "url": "https://market.yandex.ru/user/{}/achievements",
+    "urlMain": "https://market.yandex.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Insanejournal": {
+    "errorMsg": "Unknown user",
+    "errorType": "message",
+    "rank": 29728,
+    "url": "http://{}.insanejournal.com/profile",
+    "urlMain": "insanejournal.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "dlyr6cd"
+  },
+  "Trip": {
+      "errorType": "status_code",
+      "rank": 2847,
+      "url": "https://www.trip.skyscanner.com/user/{}",
+      "urlMain": "https://www.trip.skyscanner.com/",
+      "username_claimed": "blue",
+      "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SportsTracker": {
+     "errorUrl": "https://www.sports-tracker.com/page-not-found",
+     "errorType": "response_url",
+     "rank": 93950,
+     "url": "https://www.sports-tracker.com/view_profile/{}",
+     "urlMain": "https://www.sports-tracker.com/",
+     "username_claimed": "blue",
+     "username_unclaimed": "noonewouldeveruse"
+  },
+  "boingboing.net": {
+     "errorType": "status_code",
+     "rank": 5821,
+     "url": "https://bbs.boingboing.net/u/{}",
+     "urlMain": "https://boingboing.net/",
+     "username_claimed": "admin",
+     "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "elwoRU": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 254810,
+    "url": "https://elwo.ru/index/8-0-{}",
+    "urlMain": "https://elwo.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "ingvarr.net.ru": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 107721,
+    "url": "http://ingvarr.net.ru/index/8-0-{}",
+    "urlMain": "http://ingvarr.net.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Redsun.tf": {
+    "errorMsg": "The specified member cannot be found",
+    "errorType": "message",
+    "rank": 3796657,
+    "url": "https://forum.redsun.tf/members/?username={}",
+    "urlMain": "https://redsun.tf/",
+    "username_claimed": "dan",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "CreativeMarket": {
+    "errorType": "status_code",
+    "rank": 1896,
+    "url": "https://creativemarket.com/users/{}",
+    "urlMain": "https://creativemarket.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "pvpru": {
+    "errorType": "status_code",
+    "rank": 405547,
+    "url": "https://pvpru.com/board/member.php?username={}&tab=aboutme#aboutme",
+    "urlMain": "https://pvpru.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "easyen": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 11564,
+    "url": "https://easyen.ru/index/8-0-{}",
+    "urlMain": "https://easyen.ru/",
+    "username_claimed": "wd",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "pedsovet": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 6776,
+    "url": "http://pedsovet.su/index/8-0-{}",
+    "urlMain": "http://pedsovet.su/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "radioskot": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 105878,
+    "url": "https://radioskot.ru/index/8-0-{}",
+    "urlMain": "https://radioskot.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Coderwall": {
+    "errorMsg": "404! Our feels when that url is used",
+    "errorType": "message",
+    "rank": 11256,
+    "url": "https://coderwall.com/{}",
+    "urlMain": "https://coderwall.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "TamTam": {
+    "errorType": "response_url",
+    "errorUrl": "https://tamtam.chat/",
+    "rank": 87903,
+    "url": "https://tamtam.chat/{}",
+    "urlMain": "https://tamtam.chat/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Zomato": {
+    "errorType": "status_code",
+    "headers": {
+      "Accept-Language": "en-US,en;q=0.9"
+    },
+    "rank": 1920,
+    "url": "https://www.zomato.com/pl/{}/foodjourney",
+    "urlMain": "https://www.zomato.com/",
+    "username_claimed": "deepigoyal",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "mixer.com": {
+    "errorType": "status_code",
+    "rank": 1544,
+    "url": "https://mixer.com/{}",
+    "urlMain": "https://mixer.com/",
+    "urlProbe": "https://mixer.com/api/v1/channels/{}",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "KanoWorld": {
+    "errorType": "status_code",
+    "rank": 181933,
+    "url": "https://api.kano.me/progress/user/{}",
+    "urlMain": "https://world.kano.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "YandexCollection": {
+    "errorType": "status_code",
+    "url": "https://yandex.ru/collections/user/{}/",
+    "urlMain": "https://yandex.ru/collections/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "PayPal": {
+    "errorMsg": "<meta name=\"twitter:title\" content=\"Get your very own PayPal.Me link\" />",
+    "errorType": "message",
+    "url": "https://www.paypal.com/paypalme/{}",
+    "headers": {
+      "User-Agent": ""
+    },
+    "urlMain": "https://www.paypal.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noneownsthisusername7"
+  },
+  "Fiverr": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.fiverr.com/",
+    "url": "https://www.fiverr.com/{}",
+    "urlMain": "https://www.fiverr.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "ImageShack": {
+    "errorType": "response_url",
+    "errorUrl": "https://imageshack.us/",
+    "url": "https://imageshack.us/user/{}",
+    "urlMain": "https://imageshack.us/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Aptoide": {
+    "errorType": "status_code",
+    "url": "https://{}.en.aptoide.com/",
+    "urlMain": "https://en.aptoide.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Crunchyroll": {
+    "errorType": "status_code",
+    "url": "https://www.crunchyroll.com/user/{}",
+    "urlMain": "https://www.crunchyroll.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "T-MobileSupport": {
+    "errorType": "status_code",
+    "url": "https://support.t-mobile.com/people/{}",
+    "urlMain": "https://support.t-mobile.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "OpenCollective": {
+    "errorType": "status_code",
+    "url": "https://opencollective.com/{}",
+    "urlMain": "https://opencollective.com/",
+    "username_claimed": "sindresorhus",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SegmentFault": {
+    "errorType": "status_code",
+    "url": "https://segmentfault.com/u/{}",
+    "urlMain": "https://segmentfault.com/",
+    "username_claimed": "bule",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Viadeo": {
+    "errorType": "status_code",
+    "url": "http://fr.viadeo.com/en/profile/{}",
+    "urlMain": "http://fr.viadeo.com/en/",
+    "username_claimed": "franck.patissier",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "MeetMe": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.meetme.com/",
+    "url": "https://www.meetme.com/{}",
+    "urlMain": "https://www.meetme.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "tracr.co": {
+    "errorMsg": "No search results",
+    "errorType": "message",
+    "regexCheck": "^[A-Za-z0-9]{2,32}$",
+    "url": "https://tracr.co/users/1/{}",
+    "urlMain": "https://tracr.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Taringa": {
+    "errorType": "status_code",
+    "regexCheck": "^[^.]*$",
+    "url": "https://www.taringa.net/{}",
+    "urlMain": "https://taringa.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Photobucket": {
+    "errorType": "status_code",
+    "url": "https://photobucket.com/user/{}/library",
+    "urlMain": "https://photobucket.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "4pda": {
+    "errorMsg": "[1,false,0]",
+    "errorType": "message",
+    "url": "https://4pda.ru/forum/index.php?act=search&source=pst&noform=1&username={}",
+    "urlMain": "https://4pda.ru/",
+    "urlProbe": " https://4pda.ru/forum/index.php?act=auth&action=chkname&login={}",
+    "username_claimed": "green",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "PokerStrategy": {
+    "errorType": "status_code",
+    "url": "http://www.pokerstrategy.net/user/{}/profile/",
+    "urlMain": "http://www.pokerstrategy.net",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Filmogs": {
+    "errorType": "status_code",
+    "url": "https://www.filmo.gs/users/{}",
+    "urlMain": "https://www.filmo.gs/",
+    "username_claimed": "cupparober",
+    "username_unclaimed": "noonewouldeverusethis7"
+  }
+}
+
diff --git a/removed_sites.md b/removed_sites.md
index 69dc2de..f4afa4b 100644
--- a/removed_sites.md
+++ b/removed_sites.md
@@ -1,262 +1,976 @@
-# List Of Sites Removed From Sherlock
-
-This is a list of sites implemented in such a way that the current design of
-Sherlock is not capable of determining if a given username exists or not.
-They are listed here in the hope that things may change in the future
-so they may be re-included.
-
-
-## Shockwave
-
-As of 2019-11-28, usernames that exist give a 503 "Service Unavailable"
-HTTP Status.
-
-```
-  "Shockwave": {
-    "errorMsg": "Oh no! You just finished all of the games on the internet!",
-    "errorType": "message",
-    "rank": 35916,
-    "url": "http://www.shockwave.com/member/profiles/{}.jsp",
-    "urlMain": "http://www.shockwave.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-```
-
-## Foursquare
-
-Usernames that exist are not detected.
-
-```
-  "Foursquare": {
-    "errorType": "status_code",
-    "rank": 1843,
-    "url": "https://foursquare.com/{}",
-    "urlMain": "https://foursquare.com/",
-    "username_claimed": "dens",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## Khan Academy
-
-Usernames that don't exist are detected.  First noticed 2019-10-25.
-
-```
-  "Khan Academy": {
-    "errorType": "status_code",
-    "rank": 377,
-    "url": "https://www.khanacademy.org/profile/{}",
-    "urlMain": "https://www.khanacademy.org/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## PayPal
-
-Usernames that don't exist are detected.
-
-```
-  "PayPal": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.paypal.com/paypalme2/404",
-    "rank": 18441,
-    "url": "https://www.paypal.com/paypalme2/{}",
-    "urlMain": "https://www.paypal.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noneownsthisusername"
-  },
-```
-
-## Furaffinity
-
-Usernames that don't exist are detected.
-
-```
-  "Furaffinity": {
-    "errorMsg": "Fatal system error",
-    "errorType": "message",
-    "rank": 4278,
-    "url": "https://www.furaffinity.net/user/{}",
-    "urlMain": "https://www.furaffinity.net",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## Duolingo
-
-Usernames that don't exist are detected.
-
-```
-  "Duolingo": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.duolingo.com/errors/404.html",
-    "rank": 538,
-    "regexCheck": "^[a-zA-Z0-9_-]{3,16}$",
-    "url": "https://www.duolingo.com/{}",
-    "urlMain": "https://www.duolingo.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewoulduse"
-  },
-```
-
-## EVE Online
-
-Usernames that exist are not detected.
-
-```
-  "EVE Online": {
-    "errorType": "response_url",
-    "errorUrl": "https://eveonline.com",
-    "rank": 15347,
-    "url": "https://evewho.com/pilot/{}/",
-    "urlMain": "https://eveonline.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## AngelList
-
-Usernames that exist are not detected.
-
-```
-  "AngelList": {
-    "errorType": "status_code",
-    "rank": 5767,
-    "url": "https://angel.co/{}",
-    "urlMain": "https://angel.co/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## Codepen
-
-Usernames that exist are not detected.
-
-```
-  "Codepen": {
-    "errorType": "status_code",
-    "rank": 1359,
-    "url": "https://codepen.io/{}",
-    "urlMain": "https://codepen.io/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## Imgur
-
-Looks like they made some changes to the site.  Sherlock says that all
-usernames are available.
-
-```
-  "Imgur": {
-    "errorType": "status_code",
-    "rank": 74,
-    "url": "https://imgur.com/user/{}",
-    "urlMain": "https://imgur.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## PowerShell Gallery
-
-Accidentally merged even though the original pull request showed that all
-user names were available.
-
-```
-  "PowerShell Gallery": {
-    "errorType": "status_code",
-    "rank": 163562,
-    "url": "https://www.powershellgallery.com/profiles/{}",
-    "urlMain": "https://www.powershellgallery.com",
-    "username_claimed": "powershellteam",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## LinkedIn
-
-This was attempted to be added around 2019-08-26, but the pull request was never merged.
-It turns out that LinkedIn requires that you have an account before they will let you
-check for other account.  So, this site will not work with the current design of
-Sherlock.
-
-## StreamMe
-
-On 2019-04-07, I get a Timed Out message from the website.  It has not
-been working earlier either (for some weeks).  It takes about 21s before
-the site finally times out, so it really makes getting the results from
-Sherlock a pain.
-
-If the site becomes available in the future, we can put it back in.
-
-```
-  "StreamMe": {
-    "errorType": "status_code",
-    "rank": 31702,
-    "url": "https://www.stream.me/{}",
-    "urlMain": "https://www.stream.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
-
-## BlackPlanet
-
-This site has always returned a false positive.  The site returns the exact
-same text for a claimed or an unclaimed username.  The site must be rendering
-all of the different content using Javascript in the browser.  So, there is
-no way distinguish between the results with the current design of Sherlock.
-
-```
-  "BlackPlanet": {
-    "errorMsg": "My Hits",
-    "errorType": "message",
-    "rank": 110021,
-    "url": "http://blackplanet.com/{}",
-    "urlMain": "http://blackplanet.com/"
-  },
-```
-
-## Fotolog
-
-Around 2019-02-09, I get a 502 HTTP error (bad gateway) for any access.  On
-2019-03-10, the site is up, but it is in maintenance mode.
-
-It does not seem to be working, so there is no sense in including it in
-Sherlock.
-
-```
-  "Fotolog": {
-    "errorType": "status_code",
-    "rank": 47777,
-    "url": "https://fotolog.com/{}",
-    "urlMain": "https://fotolog.com/"
-  },
-```
-
-## Google Plus
-
-On 2019-04-02, Google shutdown Google Plus.  While the content for some
-users is available after that point, it is going away.  And, no one will
-be able to create a new account.  So, there is no value is keeping it in
-Sherlock.
-
-Good-bye [Google Plus](https://en.wikipedia.org/wiki/Google%2B)...
-
-```
-  "Google Plus": {
-    "errorType": "status_code",
-    "rank": 1,
-    "url": "https://plus.google.com/+{}",
-    "urlMain": "https://plus.google.com/",
-    "username_claimed": "davidbrin1",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-```
+# List Of Sites Removed From Sherlock
+
+This is a list of sites implemented in such a way that the current design of
+Sherlock is not capable of determining if a given username exists or not.
+They are listed here in the hope that things may change in the future
+so they may be re-included.
+
+
+## gpodder.net
+
+As of 2020-05-25, all usernames are reported as available.
+
+The server is returning a HTTP Status 500 (Internal server error)
+for all queries.
+
+```
+  "gpodder.net": {
+    "errorType": "status_code",
+    "rank": 2013984,
+    "url": "https://gpodder.net/user/{}",
+    "urlMain": "https://gpodder.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+
+## Investing.com
+
+As of 2020-05-25, all usernames are reported as claimed.
+
+Any query against a user seems to be redirecting to a general
+information page at https://www.investing.com/brokers/.  Probably
+required login before access.
+
+```
+  "Investing.com": {
+    "errorType": "status_code",
+    "rank": 196,
+    "url": "https://www.investing.com/traders/{}",
+    "urlMain": "https://www.investing.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## AdobeForums
+
+As of 2020-04-12, all usernames are reported as available.
+
+When I went to the site to see what was going on, usernames that I know
+existed were redirecting to the main page.
+
+I was able to see user profiles without logging in, but the URL was not
+related to their user name.  For example, user "tomke" went to
+https://community.adobe.com/t5/user/viewprofilepage/user-id/10882613.
+This can be detected, but it requires a different detection method.
+
+```
+  "AdobeForums": {
+    "errorType": "status_code",
+    "rank": 59,
+    "url": "https://forums.adobe.com/people/{}",
+    "urlMain": "https://forums.adobe.com/",
+    "username_claimed": "jack",
+    "username_unclaimed": "noonewouldeverusethis77777"
+  },
+```
+
+## Basecamp
+
+As of 2020-02-23, all usernames are reported as not existing.
+
+
+```
+  "Basecamp": {
+    "errorMsg": "The account you were looking for doesn't exist",
+    "errorType": "message",
+    "rank": 4914,
+    "url": "https://{}.basecamphq.com",
+    "urlMain": "https://basecamp.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Fanpop
+
+As of 2020-02-23, all usernames are reported as not existing.
+
+```
+  "fanpop": {
+    "errorType": "response_url",
+    "errorUrl": "http://www.fanpop.com/",
+    "rank": 9454,
+    "url": "http://www.fanpop.com/fans/{}",
+    "urlMain": "http://www.fanpop.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewould_everusethis7"
+  },
+```
+
+## Canva
+
+As of 2020-02-23, all usernames are reported as not existing.
+
+```
+  "Canva": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.canva.com/{}",
+    "rank": 128,
+    "url": "https://www.canva.com/{}",
+    "urlMain": "https://www.canva.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "xgtrq"
+  },
+```
+
+## Pixabay
+
+As of 2020-01-21, all usernames are reported as not existing.
+
+```
+  "Pixabay": {
+    "errorType": "status_code",
+    "rank": 378,
+    "url": "https://pixabay.com/en/users/{}",
+    "urlMain": "https://pixabay.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## NPM-Packages
+
+NPM-Packages are not users.
+
+```
+  "NPM-Package": {
+    "errorType": "status_code",
+    "url": "https://www.npmjs.com/package/{}",
+    "urlMain": "https://www.npmjs.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Pexels
+
+As of 2020-01-21, all usernames are reported as not existing.
+
+```
+  "Pexels": {
+    "errorType": "status_code",
+    "rank": 745,
+    "url": "https://www.pexels.com/@{}",
+    "urlMain": "https://www.pexels.com/",
+    "username_claimed": "bruno",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## RamblerDating
+
+As of 2019-12-31, site always times out.
+
+```
+  "RamblerDating": {
+    "errorType": "response_url",
+    "errorUrl": "https://dating.rambler.ru/page/{}",
+    "rank": 322,
+    "url": "https://dating.rambler.ru/page/{}",
+    "urlMain": "https://dating.rambler.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## YandexMarket
+
+As of 2019-12-31, all usernames are reported as existing.
+
+```
+  "YandexMarket": {
+    "errorMsg": "\u0422\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442",
+    "errorType": "message",
+    "rank": 47,
+    "url": "https://market.yandex.ru/user/{}/achievements",
+    "urlMain": "https://market.yandex.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Codementor
+
+As of 2019-12-31, usernames that exist are not detected.
+
+```
+  "Codementor": {
+    "errorType": "status_code",
+    "rank": 10252,
+    "url": "https://www.codementor.io/@{}",
+    "urlMain": "https://www.codementor.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## KiwiFarms
+
+As of 2019-12-31, the site gives a 403 for all usernames.  You have to
+be logged into see a profile.
+
+```
+  "KiwiFarms": {
+    "errorMsg": "The specified member cannot be found",
+    "errorType": "message",
+    "rank": 38737,
+    "url": "https://kiwifarms.net/members/?username={}",
+    "urlMain": "https://kiwifarms.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+```
+
+## Teknik
+
+As of 2019-11-30, the site causes Sherlock to just hang.
+
+```
+  "Teknik": {
+    "errorMsg": "The user does not exist",
+    "errorType": "message",
+    "rank": 357163,
+    "url": "https://user.teknik.io/{}",
+    "urlMain": "https://teknik.io/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  }
+```
+
+## Shockwave
+
+As of 2019-11-28, usernames that exist give a 503 "Service Unavailable"
+HTTP Status.
+
+```
+  "Shockwave": {
+    "errorMsg": "Oh no! You just finished all of the games on the internet!",
+    "errorType": "message",
+    "rank": 35916,
+    "url": "http://www.shockwave.com/member/profiles/{}.jsp",
+    "urlMain": "http://www.shockwave.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+```
+
+## Foursquare
+
+When usage of automated tool is detected. Whole IP is banned from future requests.
+There is an error message:
+
+> Please verify you are a human
+> Access to this page has been denied because we believe you are using automation tools to browse the website.
+
+```
+  "Foursquare": {
+    "errorType": "status_code",
+    "rank": 1843,
+    "url": "https://foursquare.com/{}",
+    "urlMain": "https://foursquare.com/",
+    "username_claimed": "dens",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Khan Academy
+
+Usernames that don't exist are detected.  First noticed 2019-10-25.
+
+```
+  "Khan Academy": {
+    "errorType": "status_code",
+    "rank": 377,
+    "url": "https://www.khanacademy.org/profile/{}",
+    "urlMain": "https://www.khanacademy.org/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+
+## EVE Online
+
+Usernames that exist are not detected.
+
+```
+  "EVE Online": {
+    "errorType": "response_url",
+    "errorUrl": "https://eveonline.com",
+    "rank": 15347,
+    "url": "https://evewho.com/pilot/{}/",
+    "urlMain": "https://eveonline.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## AngelList
+
+Usernames that exist are not detected. Forbidden Request 403 Error.
+
+```
+  "AngelList": {
+    "errorType": "status_code",
+    "rank": 5767,
+    "url": "https://angel.co/u/{}",
+    "urlMain": "https://angel.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## PowerShell Gallery
+
+Accidentally merged even though the original pull request showed that all
+user names were available.
+
+```
+  "PowerShell Gallery": {
+    "errorType": "status_code",
+    "rank": 163562,
+    "url": "https://www.powershellgallery.com/profiles/{}",
+    "urlMain": "https://www.powershellgallery.com",
+    "username_claimed": "powershellteam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## LinkedIn
+
+This was attempted to be added around 2019-08-26, but the pull request was never merged.
+It turns out that LinkedIn requires that you have an account before they will let you
+check for other account.  So, this site will not work with the current design of
+Sherlock.
+
+## StreamMe
+
+On 2019-04-07, I get a Timed Out message from the website.  It has not
+been working earlier either (for some weeks).  It takes about 21s before
+the site finally times out, so it really makes getting the results from
+Sherlock a pain.
+
+If the site becomes available in the future, we can put it back in.
+
+```
+  "StreamMe": {
+    "errorType": "status_code",
+    "rank": 31702,
+    "url": "https://www.stream.me/{}",
+    "urlMain": "https://www.stream.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## BlackPlanet
+
+This site has always returned a false positive.  The site returns the exact
+same text for a claimed or an unclaimed username.  The site must be rendering
+all of the different content using Javascript in the browser.  So, there is
+no way distinguish between the results with the current design of Sherlock.
+
+```
+  "BlackPlanet": {
+    "errorMsg": "My Hits",
+    "errorType": "message",
+    "rank": 110021,
+    "url": "http://blackplanet.com/{}",
+    "urlMain": "http://blackplanet.com/"
+  },
+```
+
+## Fotolog
+
+Around 2019-02-09, I get a 502 HTTP error (bad gateway) for any access.  On
+2019-03-10, the site is up, but it is in maintenance mode.
+
+It does not seem to be working, so there is no sense in including it in
+Sherlock.
+
+```
+  "Fotolog": {
+    "errorType": "status_code",
+    "rank": 47777,
+    "url": "https://fotolog.com/{}",
+    "urlMain": "https://fotolog.com/"
+  },
+```
+
+## Google Plus
+
+On 2019-04-02, Google shutdown Google Plus.  While the content for some
+users is available after that point, it is going away.  And, no one will
+be able to create a new account.  So, there is no value is keeping it in
+Sherlock.
+
+Good-bye [Google Plus](https://en.wikipedia.org/wiki/Google%2B)...
+
+```
+  "Google Plus": {
+    "errorType": "status_code",
+    "rank": 1,
+    "url": "https://plus.google.com/+{}",
+    "urlMain": "https://plus.google.com/",
+    "username_claimed": "davidbrin1",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+
+## Furaffinity
+
+As of 2020-02-23, Furaffinity returns false postives because they are now using Cloudflair, which prevents Sherlock from checking if the user
+exists or not.
+
+```
+  "furaffinity": {
+    "errorMsg": "user cannot be found",
+    "errorType": "message",
+    "rank": 0,
+    "url": "https://www.furaffinity.net/user/{}",
+    "urlMain": "https://www.furaffinity.net",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis777777"
+  },
+```
+
+
+## InsaneJournal
+
+As of 2020-02-23, InsaneJournal returns false positive, when providing a username which contains a period.
+Since we were not able to find the critera for a valid username, the best thing to do now is to remove it.
+
+```
+  "InsaneJournal": {
+    "errorMsg": "Unknown user",
+    "errorType": "message",
+    "rank": 29728,
+    "url": "http://{}.insanejournal.com/profile",
+    "urlMain": "insanejournal.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "dlyr6cd"
+  },
+```
+
+## Sports Tracker
+
+As of 2020-04-02, Sports Tracker returns false positives. Checking with `errorMsg` and `response_url`
+did not seem to work.
+
+```
+   "SportsTracker": {
+     "errorUrl": "https://www.sports-tracker.com/page-not-found",
+     "errorType": "response_url",
+     "rank": 93950,
+     "url": "https://www.sports-tracker.com/view_profile/{}",
+     "urlMain": "https://www.sports-tracker.com/",
+     "username_claimed": "blue",
+     "username_unclaimed": "noonewouldeveruse"
+   },
+```
+
+## Trip
+
+As of 2020-04-02, Trip by Skyscanner seems to not work beceause it keeps on
+redirecting to skyscanner.com whether the username exists or not.
+
+```
+  "Trip": {
+      "errorType": "status_code",
+      "rank": 2847,
+      "url": "https://www.trip.skyscanner.com/user/{}",
+      "urlMain": "https://www.trip.skyscanner.com/",
+      "username_claimed": "blue",
+      "username_unclaimed": "noonewouldeverusethis7"
+  },
+
+```
+
+## boingboing.net
+
+As of 2020-04-02, boingboing.net requires a login to check if a user exits or not.
+
+```
+   "boingboing.net": {
+     "errorType": "status_code",
+     "rank": 5821,
+     "url": "https://bbs.boingboing.net/u/{}",
+     "urlMain": "https://boingboing.net/",
+     "username_claimed": "admin",
+     "username_unclaimed": "noonewouldeverusethis7"
+   },
+```
+
+## elwoRU
+As of 2020-04-04, elwoRu does not exist anymore. I confirmed using
+downforeveryoneorjustme.com that the website is down.
+
+```
+  "elwoRU": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 254810,
+    "url": "https://elwo.ru/index/8-0-{}",
+    "urlMain": "https://elwo.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## ingvarr.net.ru
+
+As of 2020-04-04, ingvarr.net.ru does not exist anymore. I confirmed using
+downforeveryoneorjustme.com that the website is down.
+
+```
+  "ingvarr.net.ru": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 107721,
+    "url": "http://ingvarr.net.ru/index/8-0-{}",
+    "urlMain": "http://ingvarr.net.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Redsun.tf
+
+As of 2020-06-20, Redsun.tf seems to be adding random digits to the end of the usernames which makes it pretty much impossible
+for Sherlock to check for usernames on this particular website.
+
+```
+  "Redsun.tf": {
+    "errorMsg": "The specified member cannot be found",
+    "errorType": "message",
+    "rank": 3796657,
+    "url": "https://forum.redsun.tf/members/?username={}",
+    "urlMain": "https://redsun.tf/",
+    "username_claimed": "dan",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+```
+
+## Creative Market
+
+As of 2020-06-20, Creative Market has a captcha to prove that you are a human, and because of this
+Sherlock is unable to check for username on this site because we will always get  a page which asks
+us to prove that we are not a robot.
+
+```
+  "CreativeMarket": {
+    "errorType": "status_code",
+    "rank": 1896,
+    "url": "https://creativemarket.com/users/{}",
+    "urlMain": "https://creativemarket.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## pvpru
+
+As of 2020-06-20, pvpru uses CloudFlair, and because of this we get a "Access denied" error whenever
+we try to check for a username.
+
+```
+  "pvpru": {
+    "errorType": "status_code",
+    "rank": 405547,
+    "url": "https://pvpru.com/board/member.php?username={}&tab=aboutme#aboutme",
+    "urlMain": "https://pvpru.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## easyen
+As of 2020-06-21, easyen returns false positives when using a username which contains
+a period. Since we could not find the criteria for the usernames for this site, it will be
+removed
+
+```
+  "easyen": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 11564,
+    "url": "https://easyen.ru/index/8-0-{}",
+    "urlMain": "https://easyen.ru/",
+    "username_claimed": "wd",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## pedsovet
+As of 2020-06-21, pedsovet returns false positives when using a username which contains
+a period. Since we could not find the criteria for the usernames for this site, it will be
+removed
+
+```
+  "pedsovet": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 6776,
+    "url": "http://pedsovet.su/index/8-0-{}",
+    "urlMain": "http://pedsovet.su/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+
+## radioskot
+As of 2020-06-21, radioskot returns false positives when using a username which contains
+a period. Since we could not find the criteria for the usernames for this site, it will be
+removed
+```
+  "radioskot": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "rank": 105878,
+    "url": "https://radioskot.ru/index/8-0-{}",
+    "urlMain": "https://radioskot.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+
+
+## Coderwall
+As of 2020-07-06, Coderwall returns false positives when checking for an username which contains a period.
+I have tried to find out what Coderwall's criteria is for a valid username, but unfortunetly I have not been able to 
+find it and because of this, the best thing we can do now is to remove it.
+```
+  "Coderwall": {
+    "errorMsg": "404! Our feels when that url is used",
+    "errorType": "message",
+    "rank": 11256,
+    "url": "https://coderwall.com/{}",
+    "urlMain": "https://coderwall.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  }
+```
+
+
+## TamTam
+As of 2020-07-06, TamTam returns false positives when given a username which contains a period
+```
+  "TamTam": {
+    "errorType": "response_url",
+    "errorUrl": "https://tamtam.chat/",
+    "rank": 87903,
+    "url": "https://tamtam.chat/{}",
+    "urlMain": "https://tamtam.chat/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Zomato
+As of 2020-07-24, Zomato seems to be unstable. Majority of the time, Zomato takes a very long time to respond.
+```
+  "Zomato": {
+    "errorType": "status_code",
+    "headers": {
+      "Accept-Language": "en-US,en;q=0.9"
+    },
+    "rank": 1920,
+    "url": "https://www.zomato.com/pl/{}/foodjourney",
+    "urlMain": "https://www.zomato.com/",
+    "username_claimed": "deepigoyal",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Mixer
+As of 2020-07-22, the Mixer service has closed down.
+```
+  "mixer.com": { 
+    "errorType": "status_code", 
+    "rank": 1544, 
+    "url": "https://mixer.com/{}", 
+    "urlMain": "https://mixer.com/", 
+    "urlProbe": "https://mixer.com/api/v1/channels/{}", 
+    "username_claimed": "blue", 
+    "username_unclaimed": "noonewouldeverusethis7" 
+  }, 
+```
+
+
+## KanoWorld
+As of 2020-07-22, KanoWorld's api.kano.me subdomain no longer exists which makes it not possible for us check for usernames.
+If an alternative way to check for usernames is found then it will added.
+```
+  "KanoWorld": {
+    "errorType": "status_code",
+    "rank": 181933,
+    "url": "https://api.kano.me/progress/user/{}",
+    "urlMain": "https://world.kano.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## YandexCollection
+As of 2020-08-11, YandexCollection presents us with a rechapta which prevents us from checking for usernames
+```
+  "YandexCollection": {
+    "errorType": "status_code",
+    "url": "https://yandex.ru/collections/user/{}/",
+    "urlMain": "https://yandex.ru/collections/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## PayPal
+
+As of 2020-08-24, PayPal now returns false positives, which was found when running the tests, but will most likley be added again in the near
+future once we find a better error detecting method.
+```
+  "PayPal": {
+    "errorMsg": "<meta name=\"twitter:title\" content=\"Get your very own PayPal.Me link\" />",
+    "errorType": "message",
+    "url": "https://www.paypal.com/paypalme/{}",
+    "headers": {
+      "User-Agent": ""
+    },
+    "urlMain": "https://www.paypal.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noneownsthisusername7"
+  },
+```
+
+## Fiverr
+
+As of 2020-08-24, Fiverr now returns false positives, which was found when running the tests, but will most likley be added again in the near
+future once we find a better error detecting method.
+```
+  "Fiverr": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.fiverr.com/",
+    "url": "https://www.fiverr.com/{}",
+    "urlMain": "https://www.fiverr.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+```
+
+## ImageShack
+
+As of 2020-08-24, ImageShack now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method.
+```
+  "ImageShack": {
+    "errorType": "response_url",
+    "errorUrl": "https://imageshack.us/",
+    "url": "https://imageshack.us/user/{}",
+    "urlMain": "https://imageshack.us/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Aptoide
+
+As of 2020-08-24, Aptoide now returns false positives, which was found when running the tests, but will most likley be added again in the near
+future once we find a better error detecting method.
+```
+  "Aptoide": {
+    "errorType": "status_code",
+    "url": "https://{}.en.aptoide.com/",
+    "urlMain": "https://en.aptoide.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Crunchyroll
+
+As of 2020-08-24, Crunchyroll now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method.
+
+```
+  "Crunchyroll": {
+    "errorType": "status_code",
+    "url": "https://www.crunchyroll.com/user/{}",
+    "urlMain": "https://www.crunchyroll.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## T-MobileSupport
+As of 2020-08-24, T-MobileSupport now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method.
+
+```
+  "T-MobileSupport": {
+    "errorType": "status_code",
+    "url": "https://support.t-mobile.com/people/{}",
+    "urlMain": "https://support.t-mobile.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## OpenCollective
+
+As of 2020-08-24, OpenCollective now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method.
+
+```
+  "OpenCollective": {
+    "errorType": "status_code",
+    "url": "https://opencollective.com/{}",
+    "urlMain": "https://opencollective.com/",
+    "username_claimed": "sindresorhus",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## SegmentFault
+
+As of 2020-08-24, SegmentFault now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method.
+
+```
+  "SegmentFault": {
+    "errorType": "status_code",
+    "url": "https://segmentfault.com/u/{}",
+    "urlMain": "https://segmentfault.com/",
+    "username_claimed": "bule",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Viadeo
+
+As of 2020-08-24, Viadeo now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a fix for this
+
+```
+  "Viadeo": {
+    "errorType": "status_code",
+    "url": "http://fr.viadeo.com/en/profile/{}",
+    "urlMain": "http://fr.viadeo.com/en/",
+    "username_claimed": "franck.patissier",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+```
+
+## MeetMe
+
+As of 2020-09-02, MeetMe returns false positives
+
+```
+  "MeetMe": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.meetme.com/",
+    "url": "https://www.meetme.com/{}",
+    "urlMain": "https://www.meetme.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Linkdedin
+
+As of 2020-09-23, Linkedin returns false positives because we are prompted with prompted to login when checking for a user
+
+```
+  "Linkedin": {
+    "errorMsg": "could not be found",
+    "errorType": "message",
+    "rank": 0,
+    "url": "https://www.linkedin.com/in/{}",
+    "urlMain": "https://www.linkedin.com/",
+    "username_claimed": "alex",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## tracr.co
+As of 2020-09-23, tracr.co returns false positives because the site seems to be shut down.
+```
+  "tracr.co": {
+    "errorMsg": "No search results",
+    "errorType": "message",
+    "regexCheck": "^[A-Za-z0-9]{2,32}$",
+    "url": "https://tracr.co/users/1/{}",
+    "urlMain": "https://tracr.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  }
+```
+
+## Taringa
+
+As of 2020-09-23, Taringa returns false positives.
+
+```
+  "Taringa": {
+    "errorType": "status_code",
+    "regexCheck": "^[^.]*$",
+    "url": "https://www.taringa.net/{}",
+    "urlMain": "https://taringa.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Photobucket
+As of 2020-10-21, Photobucket return false positives. This was reported in #785.
+```
+  "Photobucket": {
+    "errorType": "status_code",
+    "url": "https://photobucket.com/user/{}/library",
+    "urlMain": "https://photobucket.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## 4PDA
+As of 2020-10-21, 4PDA returns false positives. This was reported in #784.
+
+```
+  "4pda": {
+    "errorMsg": "[1,false,0]",
+    "errorType": "message",
+    "url": "https://4pda.ru/forum/index.php?act=search&source=pst&noform=1&username={}",
+    "urlMain": "https://4pda.ru/",
+    "urlProbe": " https://4pda.ru/forum/index.php?act=auth&action=chkname&login={}",
+    "username_claimed": "green",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## PokerStrategy
+As of 2020-10-21, PokerStrategy returns false positives. This was reported in #776.
+```
+  "PokerStrategy": {
+    "errorType": "status_code",
+    "url": "http://www.pokerstrategy.net/user/{}/profile/",
+    "urlMain": "http://www.pokerstrategy.net",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
+
+## Filmogs
+
+Filmogs has closed down.
+
+> **Filmogs is closed**
+> **31-Aug 2020** - We are preparing the last data export and collection of images. It will be published here by 19-Oct 2020. If you have requested an export of your data it will also be emailed to you by 19-Oct 2020.
+
+```
+  "Filmogs": {
+    "errorType": "status_code",
+    "url": "https://www.filmo.gs/users/{}",
+    "urlMain": "https://www.filmo.gs/",
+    "username_claimed": "cupparober",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+```
diff --git a/requirements.txt b/requirements.txt
index c791e05..6c338c9 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -7,5 +7,5 @@ PySocks>=1.7.0
 requests>=2.22.0
 requests-futures>=1.0.0
 soupsieve>=1.9.2
-stem>=1.7.1
+stem>=1.8.0 
 torrequest>=0.1.0
diff --git a/sherlock.py b/sherlock.py
deleted file mode 100755
index 1e6252d..0000000
--- a/sherlock.py
+++ /dev/null
@@ -1,610 +0,0 @@
-#! /usr/bin/env python3
-
-"""
-Sherlock: Find Usernames Across Social Networks Module
-
-This module contains the main logic to search for usernames at social
-networks.
-"""
-
-import csv
-import json
-import os
-import platform
-import re
-import sys
-import random
-from argparse import ArgumentParser, RawDescriptionHelpFormatter
-from concurrent.futures import ThreadPoolExecutor
-from time import time
-
-import requests
-from colorama import Fore, Style, init
-
-from requests_futures.sessions import FuturesSession
-from torrequest import TorRequest
-from load_proxies import load_proxies_from_csv, check_proxy_list
-
-module_name = "Sherlock: Find Usernames Across Social Networks"
-__version__ = "0.9.6"
-amount = 0
-
-
-global proxy_list
-
-proxy_list = []
-
-class ElapsedFuturesSession(FuturesSession):
-    """
-    Extends FutureSession to add a response time metric to each request.
-
-    This is taken (almost) directly from here: https://github.com/ross/requests-futures#working-in-the-background
-    """
-
-    def request(self, method, url, hooks={}, *args, **kwargs):
-        start = time()
-
-        def timing(r, *args, **kwargs):
-            elapsed_sec = time() - start
-            r.elapsed = round(elapsed_sec * 1000)
-
-        try:
-            if isinstance(hooks['response'], (list, tuple)):
-                # needs to be first so we don't time other hooks execution
-                hooks['response'].insert(0, timing)
-            else:
-                hooks['response'] = [timing, hooks['response']]
-        except KeyError:
-            hooks['response'] = timing
-
-        return super(ElapsedFuturesSession, self).request(method, url, hooks=hooks, *args, **kwargs)
-
-
-def print_info(title, info):
-    print(Style.BRIGHT + Fore.GREEN + "[" +
-          Fore.YELLOW + "*" +
-          Fore.GREEN + f"] {title}" +
-          Fore.WHITE + f" {info}" +
-          Fore.GREEN + " on:")
-
-def print_error(err, errstr, var, verbose=False):
-    print(Style.BRIGHT + Fore.WHITE + "[" +
-          Fore.RED + "-" +
-          Fore.WHITE + "]" +
-          Fore.RED + f" {errstr}" +
-          Fore.YELLOW + f" {err if verbose else var}")
-
-
-def format_response_time(response_time, verbose):
-    return " [{} ms]".format(response_time) if verbose else ""
-
-
-def print_found(social_network, url, response_time, verbose=False):
-    print((Style.BRIGHT + Fore.WHITE + "[" +
-           Fore.GREEN + "+" +
-           Fore.WHITE + "]" +
-           format_response_time(response_time, verbose) +
-           Fore.GREEN + f" {social_network}:"), url)
-
-def print_not_found(social_network, response_time, verbose=False):
-    print((Style.BRIGHT + Fore.WHITE + "[" +
-           Fore.RED + "-" +
-           Fore.WHITE + "]" +
-           format_response_time(response_time, verbose) +
-           Fore.GREEN + f" {social_network}:" +
-           Fore.YELLOW + " Not Found!"))
-
-def print_invalid(social_network, msg):
-    """Print invalid search result."""
-    print((Style.BRIGHT + Fore.WHITE + "[" +
-           Fore.RED + "-" +
-           Fore.WHITE + "]" +
-           Fore.GREEN + f" {social_network}:" +
-           Fore.YELLOW + f" {msg}"))
-
-
-def get_response(request_future, error_type, social_network, verbose=False, retry_no=None):
-
-    global proxy_list
-
-    try:
-        rsp = request_future.result()
-        if rsp.status_code:
-            return rsp, error_type, rsp.elapsed
-    except requests.exceptions.HTTPError as errh:
-        print_error(errh, "HTTP Error:", social_network, verbose)
-
-    # In case our proxy fails, we retry with another proxy.
-    except requests.exceptions.ProxyError as errp:
-        if retry_no>0 and len(proxy_list)>0:
-            #Selecting the new proxy.
-            new_proxy = random.choice(proxy_list)
-            new_proxy = f'{new_proxy.protocol}://{new_proxy.ip}:{new_proxy.port}'
-            print(f'Retrying with {new_proxy}')
-            request_future.proxy = {'http':new_proxy,'https':new_proxy}
-            get_response(request_future,error_type, social_network, verbose,retry_no=retry_no-1)
-        else:
-            print_error(errp, "Proxy error:", social_network, verbose)
-    except requests.exceptions.ConnectionError as errc:
-        print_error(errc, "Error Connecting:", social_network, verbose)
-    except requests.exceptions.Timeout as errt:
-        print_error(errt, "Timeout Error:", social_network, verbose)
-    except requests.exceptions.RequestException as err:
-        print_error(err, "Unknown error:", social_network, verbose)
-    return None, "", -1
-
-
-def sherlock(username, site_data, verbose=False, tor=False, unique_tor=False, proxy=None, print_found_only=False):
-    """Run Sherlock Analysis.
-
-    Checks for existence of username on various social media sites.
-
-    Keyword Arguments:
-    username               -- String indicating username that report
-                              should be created against.
-    site_data              -- Dictionary containing all of the site data.
-    verbose                -- Boolean indicating whether to give verbose output.
-    tor                    -- Boolean indicating whether to use a tor circuit for the requests.
-    unique_tor             -- Boolean indicating whether to use a new tor circuit for each request.
-    proxy                  -- String indicating the proxy URL
-
-    Return Value:
-    Dictionary containing results from report. Key of dictionary is the name
-    of the social network site, and the value is another dictionary with
-    the following keys:
-        url_main:      URL of main site.
-        url_user:      URL of user on site (if account exists).
-        exists:        String indicating results of test for account existence.
-        http_status:   HTTP status code of query which checked for existence on
-                       site.
-        response_text: Text that came back from request.  May be None if
-                       there was an HTTP error when checking for existence.
-    """
-    global amount
-
-    print_info("Checking username", username)
-
-    # Allow 1 thread for each external service, so `len(site_data)` threads total
-    executor = ThreadPoolExecutor(max_workers=len(site_data))
-
-    # Create session based on request methodology
-    underlying_session = requests.session()
-    underlying_request = requests.Request()
-    if tor or unique_tor:
-        underlying_request = TorRequest()
-        underlying_session = underlying_request.session
-
-    # Create multi-threaded session for all requests. Use our custom FuturesSession that exposes response time
-    session = ElapsedFuturesSession(
-        executor=executor, session=underlying_session)
-
-    # Results from analysis of all sites
-    results_total = {}
-
-    # First create futures for all requests. This allows for the requests to run in parallel
-    for social_network, net_info in site_data.items():
-
-        # Results from analysis of this specific site
-        results_site = {}
-
-        # Record URL of main site
-        results_site['url_main'] = net_info.get("urlMain")
-
-        # A user agent is needed because some sites don't return the correct
-        # information since they think that we are bots (Which we actually are...)
-        headers = {
-            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0',
-        }
-
-        if "headers" in net_info:
-            # Override/append any extra headers required by a given site.
-            headers.update(net_info["headers"])
-
-        # Don't make request if username is invalid for the site
-        regex_check = net_info.get("regexCheck")
-        if regex_check and re.search(regex_check, username) is None:
-            # No need to do the check at the site: this user name is not allowed.
-            print_invalid(social_network, "Illegal Username Format For This Site!")
-            results_site["exists"] = "illegal"
-            results_site["url_user"] = ""
-            results_site['http_status'] = ""
-            results_site['response_text'] = ""
-            results_site['response_time_ms'] = ""
-        else:
-            # URL of user on site (if it exists)
-            url = net_info["url"].format(username)
-            results_site["url_user"] = url
-            url_probe = net_info.get("urlProbe")
-            if url_probe is None:
-                # Probe URL is normal one seen by people out on the web.
-                url_probe = url
-            else:
-                # There is a special URL for probing existence separate
-                # from where the user profile normally can be found.
-                url_probe = url_probe.format(username)
-
-            request_method = session.get
-            if social_network != "GitHub":
-                # If only the status_code is needed don't download the body
-                if net_info["errorType"] == 'status_code':
-                    request_method = session.head
-
-            if net_info["errorType"] == "response_url":
-                # Site forwards request to a different URL if username not
-                # found.  Disallow the redirect so we can capture the
-                # http status from the original URL request.
-                allow_redirects = False
-            else:
-                # Allow whatever redirect that the site wants to do.
-                # The final result of the request will be what is available.
-                allow_redirects = True
-
-            # This future starts running the request in a new thread, doesn't block the main thread
-            if proxy != None:
-                proxies = {"http": proxy, "https": proxy}
-                future = request_method(url=url_probe, headers=headers,
-                                        proxies=proxies,
-                                        allow_redirects=allow_redirects
-                                        )
-            else:
-                future = request_method(url=url_probe, headers=headers,
-                                        allow_redirects=allow_redirects
-                                        )
-
-            # Store future in data for access later
-            net_info["request_future"] = future
-
-            # Reset identify for tor (if needed)
-            if unique_tor:
-                underlying_request.reset_identity()
-
-        # Add this site's results into final dictionary with all of the other results.
-        results_total[social_network] = results_site
-
-    # Open the file containing account links
-    # Core logic: If tor requests, make them here. If multi-threaded requests, wait for responses
-    for social_network, net_info in site_data.items():
-
-        # Retrieve results again
-        results_site = results_total.get(social_network)
-
-        # Retrieve other site information again
-        url = results_site.get("url_user")
-        exists = results_site.get("exists")
-        if exists is not None:
-            # We have already determined the user doesn't exist here
-            continue
-
-        # Get the expected error type
-        error_type = net_info["errorType"]
-
-        # Default data in case there are any failures in doing a request.
-        http_status = "?"
-        response_text = ""
-
-        # Retrieve future and ensure it has finished
-        future = net_info["request_future"]
-        r, error_type, response_time = get_response(request_future=future,
-                                                    error_type=error_type,
-                                                    social_network=social_network,
-                                                    verbose=verbose,
-                                                    retry_no=3)
-
-        # Attempt to get request information
-        try:
-            http_status = r.status_code
-        except:
-            pass
-        try:
-            response_text = r.text.encode(r.encoding)
-        except:
-            pass
-
-        if error_type == "message":
-            error = net_info.get("errorMsg")
-            # Checks if the error message is in the HTML
-            if not error in r.text:
-                print_found(social_network, url, response_time, verbose)
-                exists = "yes"
-                amount = amount+1
-            else:
-                if not print_found_only:
-                    print_not_found(social_network, response_time, verbose)
-                exists = "no"
-
-        elif error_type == "status_code":
-            # Checks if the status code of the response is 2XX
-            if not r.status_code >= 300 or r.status_code < 200:
-                print_found(social_network, url, response_time, verbose)
-                exists = "yes"
-                amount = amount+1
-            else:
-                if not print_found_only:
-                    print_not_found(social_network, response_time, verbose)
-                exists = "no"
-
-        elif error_type == "response_url":
-            # For this detection method, we have turned off the redirect.
-            # So, there is no need to check the response URL: it will always
-            # match the request.  Instead, we will ensure that the response
-            # code indicates that the request was successful (i.e. no 404, or
-            # forward to some odd redirect).
-            if 200 <= r.status_code < 300:
-                #
-                print_found(social_network, url, response_time, verbose)
-                exists = "yes"
-                amount = amount+1
-            else:
-                if not print_found_only:
-                    print_not_found(social_network, response_time, verbose)
-                exists = "no"
-
-        elif error_type == "":
-            if not print_found_only:
-                print_invalid(social_network, "Error!")
-            exists = "error"
-
-        # Save exists flag
-        results_site['exists'] = exists
-
-        # Save results from request
-        results_site['http_status'] = http_status
-        results_site['response_text'] = response_text
-        results_site['response_time_ms'] = response_time
-
-        # Add this site's results into final dictionary with all of the other results.
-        results_total[social_network] = results_site
-    return results_total
-
-
-def main():
-    # Colorama module's initialization.
-    init(autoreset=True)
-
-    version_string = f"%(prog)s {__version__}\n" +  \
-                     f"{requests.__description__}:  {requests.__version__}\n" + \
-                     f"Python:  {platform.python_version()}"
-
-    parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter,
-                            description=f"{module_name} (Version {__version__})"
-                            )
-    parser.add_argument("--version",
-                        action="version",  version=version_string,
-                        help="Display version information and dependencies."
-                        )
-    parser.add_argument("--verbose", "-v", "-d", "--debug",
-                        action="store_true",  dest="verbose", default=False,
-                        help="Display extra debugging information and metrics."
-                        )
-    parser.add_argument("--rank", "-r",
-                        action="store_true", dest="rank", default=False,
-                        help="Present websites ordered by their Alexa.com global rank in popularity.")
-    parser.add_argument("--folderoutput", "-fo", dest="folderoutput",
-                        help="If using multiple usernames, the output of the results will be saved to this folder."
-                        )
-    parser.add_argument("--output", "-o", dest="output",
-                        help="If using single username, the output of the result will be saved to this file."
-                        )
-    parser.add_argument("--tor", "-t",
-                        action="store_true", dest="tor", default=False,
-                        help="Make requests over Tor; increases runtime; requires Tor to be installed and in system path.")
-    parser.add_argument("--unique-tor", "-u",
-                        action="store_true", dest="unique_tor", default=False,
-                        help="Make requests over Tor with new Tor circuit after each request; increases runtime; requires Tor to be installed and in system path.")
-    parser.add_argument("--csv",
-                        action="store_true",  dest="csv", default=False,
-                        help="Create Comma-Separated Values (CSV) File."
-                        )
-    parser.add_argument("--site",
-                        action="append", metavar='SITE_NAME',
-                        dest="site_list", default=None,
-                        help="Limit analysis to just the listed sites. Add multiple options to specify more than one site."
-                        )
-    parser.add_argument("--proxy", "-p", metavar='PROXY_URL',
-                        action="store", dest="proxy", default=None,
-                        help="Make requests over a proxy. e.g. socks5://127.0.0.1:1080"
-                        )
-    parser.add_argument("--json", "-j", metavar="JSON_FILE",
-                        dest="json_file", default="data.json",
-                        help="Load data from a JSON file or an online, valid, JSON file.")
-    parser.add_argument("--proxy_list", "-pl", metavar='PROXY_LIST',
-                        action="store", dest="proxy_list", default=None,
-                        help="Make requests over a proxy randomly chosen from a list generated from a .csv file."
-                        )
-    parser.add_argument("--check_proxies", "-cp", metavar='CHECK_PROXY',
-                        action="store", dest="check_prox", default=None,
-                        help="To be used with the '--proxy_list' parameter. "
-                             "The script will check if the proxies supplied in the .csv file are working and anonymous."
-                             "Put 0 for no limit on successfully checked proxies, or another number to institute a limit."
-                        )
-    parser.add_argument("--print-found",
-                        action="store_true", dest="print_found_only", default=False,
-                        help="Do not output sites where the username was not found."
-                        )
-    parser.add_argument("username",
-                        nargs='+', metavar='USERNAMES',
-                        action="store",
-                        help="One or more usernames to check with social networks."
-                        )
-
-    args = parser.parse_args()
-
-
-    # Argument check
-    # TODO regex check on args.proxy
-    if args.tor and (args.proxy != None or args.proxy_list != None):
-        raise Exception("Tor and Proxy cannot be set in the meantime.")
-
-    # Proxy argument check.
-    # Does not necessarily need to throw an error,
-    # since we could join the single proxy with the ones generated from the .csv,
-    # but it seems unnecessarily complex at this time.
-    if args.proxy != None and args.proxy_list != None:
-        raise Exception("A single proxy cannot be used along with proxy list.")
-
-    # Make prompts
-    if args.proxy != None:
-        print("Using the proxy: " + args.proxy)
-
-    global proxy_list
-
-    if args.proxy_list != None:
-        print_info("Loading proxies from", args.proxy_list)
-
-        proxy_list = load_proxies_from_csv(args.proxy_list)
-
-    # Checking if proxies should be checked for anonymity.
-    if args.check_prox != None and args.proxy_list != None:
-        try:
-            limit = int(args.check_prox)
-            if limit == 0:
-                proxy_list = check_proxy_list(proxy_list)
-            elif limit > 0:
-                proxy_list = check_proxy_list(proxy_list, limit)
-            else:
-                raise ValueError
-        except ValueError:
-            raise Exception("Parameter --check_proxies/-cp must be a positive integer.")
-
-    if args.tor or args.unique_tor:
-        print("Using Tor to make requests")
-        print("Warning: some websites might refuse connecting over Tor, so note that using this option might increase connection errors.")
-
-    # Check if both output methods are entered as input.
-    if args.output is not None and args.folderoutput is not None:
-        print("You can only use one of the output methods.")
-        sys.exit(1)
-
-    # Check validity for single username output.
-    if args.output is not None and len(args.username) != 1:
-        print("You can only use --output with a single username")
-        sys.exit(1)
-
-    response_json_online = None
-    site_data_all = None
-
-    # Try to load json from website.
-    try:
-        response_json_online = requests.get(url=args.json_file)
-    except requests.exceptions.MissingSchema:  # In case the schema is wrong it's because it may not be a website
-        pass
-
-    # Check if the response is appropriate.
-    if response_json_online is not None and response_json_online.status_code == 200:
-        # Since we got data from a website, try to load json and exit if parsing fails.
-        try:
-            site_data_all = response_json_online.json()
-        except ValueError:
-            print("Invalid JSON from website!")
-            sys.exit(1)
-            pass
-
-    data_file_path = os.path.join(os.path.dirname(
-        os.path.realpath(__file__)), args.json_file)
-    # This will be none if the request had a missing schema
-    if site_data_all is None:
-        # Check if the file exists otherwise exit.
-        if not os.path.exists(data_file_path):
-            print("JSON file doesn't exist.")
-            print(
-                "If this is not a file but a website, make sure you have appended http:// or https://.")
-            sys.exit(1)
-        else:
-            raw = open(data_file_path, "r", encoding="utf-8")
-            try:
-                site_data_all = json.load(raw)
-            except:
-                print("Invalid JSON loaded from file.")
-
-    if args.site_list is None:
-        # Not desired to look at a sub-set of sites
-        site_data = site_data_all
-    else:
-        # User desires to selectively run queries on a sub-set of the site list.
-
-        # Make sure that the sites are supported & build up pruned site database.
-        site_data = {}
-        site_missing = []
-        for site in args.site_list:
-            for existing_site in site_data_all:
-                if site.lower() == existing_site.lower():
-                    site_data[existing_site] = site_data_all[existing_site]
-            if not site_data:
-                # Build up list of sites not supported for future error message.
-                site_missing.append(f"'{site}'")
-
-        if site_missing:
-            print(
-                f"Error: Desired sites not found: {', '.join(site_missing)}.")
-            sys.exit(1)
-
-    if args.rank:
-        # Sort data by rank
-        site_dataCpy = dict(site_data)
-        ranked_sites = sorted(site_data, key=lambda k: ("rank" not in k, site_data[k].get("rank", sys.maxsize)))
-        site_data = {}
-        for site in ranked_sites:
-            site_data[site] = site_dataCpy.get(site)
-
-    # Run report on all specified users.
-    for username in args.username:
-        print()
-
-        if args.output:
-            file = open(args.output, "w", encoding="utf-8")
-        elif args.folderoutput:  # In case we handle multiple usernames at a targetted folder.
-            # If the folder doesnt exist, create it first
-            if not os.path.isdir(args.folderoutput):
-                os.mkdir(args.folderoutput)
-            file = open(os.path.join(args.folderoutput,
-                                     username + ".txt"), "w", encoding="utf-8")
-        else:
-            file = open(username + ".txt", "w", encoding="utf-8")
-
-        # We try to ad a random member of the 'proxy_list' var as the proxy of the request.
-        # If we can't access the list or it is empty, we proceed with args.proxy as the proxy.
-        try:
-            random_proxy = random.choice(proxy_list)
-            proxy = f'{random_proxy.protocol}://{random_proxy.ip}:{random_proxy.port}'
-        except (NameError, IndexError):
-            proxy = args.proxy
-
-        results = {}
-        results = sherlock(username, site_data, verbose=args.verbose,
-                           tor=args.tor, unique_tor=args.unique_tor, proxy=args.proxy, print_found_only=args.print_found_only)
-
-        exists_counter = 0
-        for website_name in results:
-            dictionary = results[website_name]
-            if dictionary.get("exists") == "yes":
-                exists_counter += 1
-                file.write(dictionary["url_user"] + "\n")
-        file.write("Total Websites : {}".format(exists_counter))
-        file.close()
-
-        if args.csv == True:
-            with open(username + ".csv", "w", newline='', encoding="utf-8") as csv_report:
-                writer = csv.writer(csv_report)
-                writer.writerow(['username',
-                                 'name',
-                                 'url_main',
-                                 'url_user',
-                                 'exists',
-                                 'http_status',
-                                 'response_time_ms'
-                                 ]
-                                )
-                for site in results:
-                    writer.writerow([username,
-                                     site,
-                                     results[site]['url_main'],
-                                     results[site]['url_user'],
-                                     results[site]['exists'],
-                                     results[site]['http_status'],
-                                     results[site]['response_time_ms']
-                                     ]
-                                    )
-
-
-if __name__ == "__main__":
-    main()
diff --git a/sherlock/__init__.py b/sherlock/__init__.py
new file mode 100644
index 0000000..b0894c8
--- /dev/null
+++ b/sherlock/__init__.py
@@ -0,0 +1,5 @@
+"""Sherlock Module
+
+This module contains the main logic to search for usernames at social
+networks.
+"""
diff --git a/sherlock/__main__.py b/sherlock/__main__.py
new file mode 100644
index 0000000..91140be
--- /dev/null
+++ b/sherlock/__main__.py
@@ -0,0 +1,30 @@
+#! /usr/bin/env python3
+
+"""
+Sherlock: Find Usernames Across Social Networks Module
+
+This module contains the main logic to search for usernames at social
+networks.
+"""
+
+import sys
+
+
+if __name__ == "__main__":
+    # Checking if the user is using the correct version of Python
+    # Reference:
+    #  If Python version is 3.6.5
+    #               major --^
+    #               minor ----^
+    #               micro ------^
+    major = sys.version_info[0]
+    minor = sys.version_info[1]
+
+    python_version = str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2])
+
+    if major != 3 or major == 3 and minor < 6:
+        print("Sherlock requires Python 3.6+\nYou are using Python %s, which is not supported by Sherlock" % (python_version))
+        sys.exit(1)
+
+    import sherlock
+    sherlock.main()
diff --git a/sherlock/notify.py b/sherlock/notify.py
new file mode 100644
index 0000000..e3e4abb
--- /dev/null
+++ b/sherlock/notify.py
@@ -0,0 +1,255 @@
+"""Sherlock Notify Module
+
+This module defines the objects for notifying the caller about the
+results of queries.
+"""
+from result import QueryStatus
+from colorama import Fore, Style, init
+
+
+class QueryNotify():
+    """Query Notify Object.
+
+    Base class that describes methods available to notify the results of
+    a query.
+    It is intended that other classes inherit from this base class and
+    override the methods to implement specific functionality.
+    """
+    def __init__(self, result=None):
+        """Create Query Notify Object.
+
+        Contains information about a specific method of notifying the results
+        of a query.
+
+        Keyword Arguments:
+        self                   -- This object.
+        result                 -- Object of type QueryResult() containing
+                                  results for this query.
+
+        Return Value:
+        Nothing.
+        """
+
+        self.result = result
+
+        return
+
+    def start(self, message=None):
+        """Notify Start.
+
+        Notify method for start of query.  This method will be called before
+        any queries are performed.  This method will typically be
+        overridden by higher level classes that will inherit from it.
+
+        Keyword Arguments:
+        self                   -- This object.
+        message                -- Object that is used to give context to start
+                                  of query.
+                                  Default is None.
+
+        Return Value:
+        Nothing.
+        """
+
+        return
+
+    def update(self, result):
+        """Notify Update.
+
+        Notify method for query result.  This method will typically be
+        overridden by higher level classes that will inherit from it.
+
+        Keyword Arguments:
+        self                   -- This object.
+        result                 -- Object of type QueryResult() containing
+                                  results for this query.
+
+        Return Value:
+        Nothing.
+        """
+
+        self.result = result
+
+        return
+
+    def finish(self, message=None):
+        """Notify Finish.
+
+        Notify method for finish of query.  This method will be called after
+        all queries have been performed.  This method will typically be
+        overridden by higher level classes that will inherit from it.
+
+        Keyword Arguments:
+        self                   -- This object.
+        message                -- Object that is used to give context to start
+                                  of query.
+                                  Default is None.
+
+        Return Value:
+        Nothing.
+        """
+
+        return
+
+    def __str__(self):
+        """Convert Object To String.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        Nicely formatted string to get information about this object.
+        """
+        result = str(self.result)
+
+        return result
+
+
+class QueryNotifyPrint(QueryNotify):
+    """Query Notify Print Object.
+
+    Query notify class that prints results.
+    """
+    def __init__(self, result=None, verbose=False, color=True, print_all=False):
+        """Create Query Notify Print Object.
+
+        Contains information about a specific method of notifying the results
+        of a query.
+
+        Keyword Arguments:
+        self                   -- This object.
+        result                 -- Object of type QueryResult() containing
+                                  results for this query.
+        verbose                -- Boolean indicating whether to give verbose output.
+        print_all              -- Boolean indicating whether to only print all sites, including not found.
+        color                  -- Boolean indicating whether to color terminal output
+
+        Return Value:
+        Nothing.
+        """
+
+        # Colorama module's initialization.
+        init(autoreset=True)
+
+        super().__init__(result)
+        self.verbose = verbose
+        self.print_all = print_all
+        self.color = color
+
+        return
+
+    def start(self, message):
+        """Notify Start.
+
+        Will print the title to the standard output.
+
+        Keyword Arguments:
+        self                   -- This object.
+        message                -- String containing username that the series
+                                  of queries are about.
+
+        Return Value:
+        Nothing.
+        """
+
+        title = "Checking username"
+        if self.color:
+            print(Style.BRIGHT + Fore.GREEN + "[" +
+                Fore.YELLOW + "*" +
+                Fore.GREEN + f"] {title}" +
+                Fore.WHITE + f" {message}" +
+                Fore.GREEN + " on:")
+        else:
+            print(f"[*] {title} {message} on:")
+
+        return
+
+    def update(self, result):
+        """Notify Update.
+
+        Will print the query result to the standard output.
+
+        Keyword Arguments:
+        self                   -- This object.
+        result                 -- Object of type QueryResult() containing
+                                  results for this query.
+
+        Return Value:
+        Nothing.
+        """
+        self.result = result
+
+        if self.verbose == False or self.result.query_time is None:
+            response_time_text = ""
+        else:
+            response_time_text = f" [{round(self.result.query_time * 1000)} ms]"
+
+        # Output to the terminal is desired.
+        if result.status == QueryStatus.CLAIMED:
+            if self.color:
+                print((Style.BRIGHT + Fore.WHITE + "[" +
+                       Fore.GREEN + "+" +
+                       Fore.WHITE + "]" +
+                       response_time_text +
+                       Fore.GREEN +
+                       f" {self.result.site_name}: " +
+                       Style.RESET_ALL +
+                       f"{self.result.site_url_user}"))
+            else:
+                print(f"[+]{response_time_text} {self.result.site_name}: {self.result.site_url_user}")
+
+        elif result.status == QueryStatus.AVAILABLE:
+            if self.print_all:
+                if self.color:
+                    print((Style.BRIGHT + Fore.WHITE + "[" +
+                        Fore.RED + "-" +
+                        Fore.WHITE + "]" +
+                        response_time_text +
+                        Fore.GREEN + f" {self.result.site_name}:" +
+                        Fore.YELLOW + " Not Found!"))
+                else:
+                    print(f"[-]{response_time_text} {self.result.site_name}: Not Found!")
+
+        elif result.status == QueryStatus.UNKNOWN:
+            if self.print_all:
+                if self.color:
+                    print(Style.BRIGHT + Fore.WHITE + "[" +
+                          Fore.RED + "-" +
+                          Fore.WHITE + "]" +
+                          Fore.GREEN + f" {self.result.site_name}:" +
+                          Fore.RED + f" {self.result.context}" +
+                          Fore.YELLOW + f" ")
+                else:
+                    print(f"[-] {self.result.site_name}: {self.result.context} ")
+
+        elif result.status == QueryStatus.ILLEGAL:
+            if self.print_all:
+                msg = "Illegal Username Format For This Site!"
+                if self.color:
+                    print((Style.BRIGHT + Fore.WHITE + "[" +
+                           Fore.RED + "-" +
+                           Fore.WHITE + "]" +
+                           Fore.GREEN + f" {self.result.site_name}:" +
+                           Fore.YELLOW + f" {msg}"))
+                else:
+                    print(f"[-] {self.result.site_name} {msg}")
+
+        else:
+            # It should be impossible to ever get here...
+            raise ValueError(f"Unknown Query Status '{str(result.status)}' for "
+                             f"site '{self.result.site_name}'")
+
+        return
+
+    def __str__(self):
+        """Convert Object To String.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        Nicely formatted string to get information about this object.
+        """
+        result = str(self.result)
+
+        return result
diff --git a/data.json b/sherlock/resources/data.json
similarity index 54%
rename from data.json
rename to sherlock/resources/data.json
index 8d70383..15b2765 100644
--- a/data.json
+++ b/sherlock/resources/data.json
@@ -1,1686 +1,2303 @@
-{
-  "2Dimensions": {
-    "errorType": "status_code",
-    "rank": 190608,
-    "url": "https://2Dimensions.com/a/{}",
-    "urlMain": "https://2Dimensions.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "500px": {
-    "errorMsg": "Oops! This page doesn\u2019t exist.",
-    "errorType": "message",
-    "rank": 3036,
-    "url": "https://500px.com/{}",
-    "urlMain": "https://500px.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "7Cups": {
-    "errorType": "status_code",
-    "rank": 39707,
-    "url": "https://www.7cups.com/@{}",
-    "urlMain": "https://www.7cups.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "9GAG": {
-    "errorType": "status_code",
-    "rank": 405,
-    "url": "https://9gag.com/u/{}",
-    "urlMain": "https://9gag.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "About.me": {
-    "errorType": "status_code",
-    "rank": 13722,
-    "url": "https://about.me/{}",
-    "urlMain": "https://about.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Academia.edu": {
-    "errorType": "status_code",
-    "rank": 166,
-    "url": "https://independent.academia.edu/{}",
-    "urlMain": "https://www.academia.edu/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Al\u00edk.cz": {
-    "errorType": "status_code",
-    "rank": 388439,
-    "url": "https://www.alik.cz/u/{}",
-    "urlMain": "https://www.alik.cz/",
-    "username_claimed": "julian",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Anobii": {
-    "errorType": "response_url",
-    "rank": 51888,
-    "url": "https://www.anobii.com/{}/profile",
-    "urlMain": "https://www.anobii.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Aptoide": {
-    "errorType": "status_code",
-    "rank": 5228,
-    "url": "https://{}.en.aptoide.com/",
-    "urlMain": "https://en.aptoide.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Archive.org": {
-    "errorMsg": "cannot find account",
-    "errorType": "message",
-    "rank": 202,
-    "url": "https://archive.org/details/@{}",
-    "urlMain": "https://archive.org",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewould"
-  },
-  "AskFM": {
-    "errorMsg": "Well, apparently not anymore.",
-    "errorType": "message",
-    "rank": 2040,
-    "url": "https://ask.fm/{}",
-    "urlMain": "https://ask.fm/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Av\u00edzo.cz": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.avizo.cz/",
-    "rank": 205490,
-    "url": "https://www.avizo.cz/{}/",
-    "urlMain": "https://www.avizo.cz/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "BLIP.fm": {
-    "errorType": "status_code",
-    "rank": 123124,
-    "url": "https://blip.fm/{}",
-    "urlMain": "https://blip.fm/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Badoo": {
-    "errorType": "status_code",
-    "rank": 1577,
-    "url": "https://badoo.com/profile/{}",
-    "urlMain": "https://badoo.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Bandcamp": {
-    "errorType": "status_code",
-    "rank": 865,
-    "url": "https://www.bandcamp.com/{}",
-    "urlMain": "https://www.bandcamp.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Basecamp": {
-    "errorMsg": "The account you were looking for doesn't exist",
-    "errorType": "message",
-    "rank": 4508,
-    "url": "https://{}.basecamphq.com",
-    "urlMain": "https://basecamp.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Bazar.cz": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.bazar.cz/error404.aspx",
-    "rank": 714225,
-    "url": "https://www.bazar.cz/{}/",
-    "urlMain": "https://www.bazar.cz/",
-    "username_claimed": "pianina",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Behance": {
-    "errorType": "status_code",
-    "rank": 349,
-    "url": "https://www.behance.net/{}",
-    "urlMain": "https://www.behance.net/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "BitBucket": {
-    "errorType": "status_code",
-    "rank": 1817,
-    "url": "https://bitbucket.org/{}/",
-    "urlMain": "https://bitbucket.org/",
-    "username_claimed": "white",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "BitCoinForum": {
-    "errorMsg": "The user whose profile you are trying to view does not exist.",
-    "errorType": "message",
-    "rank": 178380,
-    "url": "https://bitcoinforum.com/profile/{}",
-    "urlMain": "https://bitcoinforum.com",
-    "username_claimed": "bitcoinforum.com",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Blogger": {
-    "errorType": "status_code",
-    "rank": 244,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://{}.blogspot.com",
-    "urlMain": "https://www.blogger.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Bookcrossing": {
-    "errorType": "status_code",
-    "rank": 57346,
-    "url": "https://www.bookcrossing.com/mybookshelf/{}/",
-    "urlMain": "https://www.bookcrossing.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Brew": {
-    "errorType": "status_code",
-    "rank": 288824,
-    "url": "https://www.brew.com/{}",
-    "urlMain": "https://www.brew.com/",
-    "urlProbe": "https://api.brew.com/api/public/podcast/{}",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "BuyMeACoffee": {
-    "errorMsg": "It returned a 404 error",
-    "errorType": "message",
-    "rank": 26156,
-    "url": "https://buymeacoff.ee/{}",
-    "urlMain": "https://www.buymeacoffee.com/",
-    "urlProbe": "https://www.buymeacoffee.com/{}",
-    "username_claimed": "red",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "BuzzFeed": {
-    "errorType": "status_code",
-    "rank": 371,
-    "url": "https://buzzfeed.com/{}",
-    "urlMain": "https://buzzfeed.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "xgtrq"
-  },
-  "CNET": {
-    "errorType": "status_code",
-    "rank": 120,
-    "url": "https://www.cnet.com/profiles/{}/",
-    "urlMain": "https://www.cnet.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Canva": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.canva.com/{}",
-    "rank": 97,
-    "url": "https://www.canva.com/{}",
-    "urlMain": "https://www.canva.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "xgtrq"
-  },
-  "CapFriendly": {
-    "errorMsg": "No User Found",
-    "errorType": "message",
-    "rank": 37859,
-    "url": "https://www.capfriendly.com/users/{}",
-    "urlMain": "https://www.capfriendly.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Carbonmade": {
-    "errorType": "response_url",
-    "errorUrl": "https://carbonmade.com/fourohfour?domain={}.carbonmade.com",
-    "rank": 19784,
-    "url": "https://{}.carbonmade.com",
-    "urlMain": "https://carbonmade.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "CashMe": {
-    "errorType": "status_code",
-    "rank": 6306949,
-    "url": "https://cash.me/{}",
-    "urlMain": "https://cash.me/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Cent": {
-    "errorMsg": "<title>Cent</title>",
-    "errorType": "message",
-    "rank": 207226,
-    "url": "https://beta.cent.co/@{}",
-    "urlMain": "https://cent.co/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Chatujme.cz": {
-    "errorMsg": "Neexistujic\u00ed profil",
-    "errorType": "message",
-    "rank": 7945720,
-    "url": "https://profil.chatujme.cz/{}",
-    "urlMain": "https://chatujme.cz/",
-    "username_claimed": "david",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Cloob": {
-    "errorType": "status_code",
-    "rank": 7301,
-    "url": "https://www.cloob.com/name/{}",
-    "urlMain": "https://www.cloob.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Codecademy": {
-    "errorType": "status_code",
-    "rank": 2725,
-    "url": "https://www.codecademy.com/profiles/{}",
-    "urlMain": "https://www.codecademy.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Codechef": {
-    "errorType": "status_code",
-    "rank": 10360,
-    "url": "https://www.codechef.com/users/{}",
-    "urlMain": "https://www.codechef.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Codementor": {
-    "errorType": "status_code",
-    "rank": 11771,
-    "url": "https://www.codementor.io/{}",
-    "urlMain": "https://www.codementor.io/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Coderwall": {
-    "errorMsg": "404! Our feels when that url is used",
-    "errorType": "message",
-    "rank": 14806,
-    "url": "https://coderwall.com/{}",
-    "urlMain": "https://coderwall.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Codewars": {
-    "errorType": "status_code",
-    "rank": 22043,
-    "url": "https://www.codewars.com/users/{}",
-    "urlMain": "https://www.codewars.com",
-    "username_claimed": "example",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "ColourLovers": {
-    "errorType": "status_code",
-    "rank": 21564,
-    "url": "https://www.colourlovers.com/lover/{}",
-    "urlMain": "https://www.colourlovers.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Contently": {
-    "errorMsg": "We can't find that page!",
-    "errorType": "message",
-    "rank": 32408,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://{}.contently.com/",
-    "urlMain": "https://contently.com/",
-    "username_claimed": "jordanteicher",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Coroflot": {
-    "errorType": "status_code",
-    "rank": 26806,
-    "url": "https://www.coroflot.com/{}",
-    "urlMain": "https://coroflot.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Cracked": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.cracked.com/",
-    "rank": 3770,
-    "url": "https://www.cracked.com/members/{}/",
-    "urlMain": "https://www.cracked.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "CreativeMarket": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.creativemarket.com/",
-    "rank": 1640,
-    "url": "https://creativemarket.com/{}",
-    "urlMain": "https://creativemarket.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Crevado": {
-    "errorType": "status_code",
-    "rank": 131355,
-    "url": "https://{}.crevado.com",
-    "urlMain": "https://crevado.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Crunchyroll": {
-    "errorType": "status_code",
-    "rank": 585,
-    "url": "https://www.crunchyroll.com/user/{}",
-    "urlMain": "https://www.crunchyroll.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "DEV Community": {
-    "errorType": "status_code",
-    "rank": 5708,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://dev.to/{}",
-    "urlMain": "https://dev.to/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "DailyMotion": {
-    "errorType": "status_code",
-    "rank": 185,
-    "url": "https://www.dailymotion.com/{}",
-    "urlMain": "https://www.dailymotion.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Designspiration": {
-    "errorType": "status_code",
-    "rank": 1073309,
-    "url": "https://www.designspiration.net/{}/",
-    "urlMain": "https://www.designspiration.net/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "DeviantART": {
-    "errorType": "status_code",
-    "rank": 399,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://{}.deviantart.com",
-    "urlMain": "https://deviantart.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Discogs": {
-    "errorType": "status_code",
-    "rank": 961,
-    "url": "https://www.discogs.com/user/{}",
-    "urlMain": "https://www.discogs.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Discuss.Elastic.co": {
-    "errorType": "status_code",
-    "rank": 7733,
-    "url": "https://discuss.elastic.co/u/{}",
-    "urlMain": "https://discuss.elastic.co/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Disqus": {
-    "errorType": "status_code",
-    "rank": 918,
-    "url": "https://disqus.com/{}",
-    "urlMain": "https://disqus.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Docker Hub": {
-    "errorType": "status_code",
-    "rank": 3468,
-    "url": "https://hub.docker.com/u/{}/",
-    "urlMain": "https://hub.docker.com/",
-    "urlProbe": "https://hub.docker.com/v2/users/{}/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Dribbble": {
-    "errorMsg": "Whoops, that page is gone.",
-    "errorType": "message",
-    "rank": 806,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://dribbble.com/{}",
-    "urlMain": "https://dribbble.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Ebay": {
-    "errorMsg": "The User ID you entered was not found",
-    "errorType": "message",
-    "rank": 46,
-    "url": "https://www.ebay.com/usr/{}",
-    "urlMain": "https://www.ebay.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Ello": {
-    "errorMsg": "We couldn't find the page you're looking for",
-    "errorType": "message",
-    "rank": 46398,
-    "url": "https://ello.co/{}",
-    "urlMain": "https://ello.co/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Etsy": {
-    "errorType": "status_code",
-    "rank": 162,
-    "url": "https://www.etsy.com/shop/{}",
-    "urlMain": "https://www.etsy.com/",
-    "username_claimed": "JennyKrafts",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "EyeEm": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.eyeem.com/",
-    "rank": 43705,
-    "url": "https://www.eyeem.com/u/{}",
-    "urlMain": "https://www.eyeem.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Facebook": {
-    "errorType": "status_code",
-    "rank": 10,
-    "regexCheck": "^[a-zA-Z0-9\\.]{3,49}(?<!\\.com|\\.org|\\.net)$",
-    "url": "https://www.facebook.com/{}",
-    "urlMain": "https://www.facebook.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Fandom": {
-    "errorType": "status_code",
-    "rank": 86,
-    "url": "https://www.fandom.com/u/{}",
-    "urlMain": "https://www.fandom.com/",
-    "username_claimed": "Jungypoo",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Filmogs": {
-    "errorType": "status_code",
-    "rank": 2487627,
-    "url": "https://www.filmo.gs/users/{}",
-    "urlMain": "https://www.filmo.gs/",
-    "username_claimed": "cupparober",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Fiverr": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.fiverr.com/",
-    "rank": 173,
-    "url": "https://www.fiverr.com/{}",
-    "urlMain": "https://www.fiverr.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Flickr": {
-    "errorType": "status_code",
-    "rank": 870,
-    "url": "https://www.flickr.com/people/{}",
-    "urlMain": "https://www.flickr.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Flightradar24": {
-    "errorType": "status_code",
-    "rank": 1681,
-    "url": "https://my.flightradar24.com/{}",
-    "urlMain": "https://www.flightradar24.com/",
-    "username_claimed": "jebbrooks",
-    "username_unclaimed": "xgtrq"
-  },
-  "Flipboard": {
-    "errorType": "status_code",
-    "rank": 11050,
-    "regexCheck": "^([a-zA-Z0-9_]){1,15}$",
-    "url": "https://flipboard.com/@{}",
-    "urlMain": "https://flipboard.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "xgtrq"
-  },
-  "GDProfiles": {
-    "errorType": "status_code",
-    "rank": 7305892,
-    "url": "https://gdprofiles.com/{}",
-    "urlMain": "https://gdprofiles.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Gamespot": {
-    "errorType": "status_code",
-    "rank": 476,
-    "url": "https://www.gamespot.com/profile/{}/",
-    "urlMain": "https://www.gamespot.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Giphy": {
-    "errorType": "status_code",
-    "rank": 381,
-    "url": "https://giphy.com/{}",
-    "urlMain": "https://giphy.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "GitHub": {
-    "errorType": "status_code",
-    "rank": 92,
-    "regexCheck": "^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$",
-    "url": "https://www.github.com/{}",
-    "urlMain": "https://www.github.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "GitLab": {
-    "errorMsg": "[]",
-    "errorType": "message",
-    "rank": 2933,
-    "url": "https://gitlab.com/{}",
-    "urlMain": "https://gitlab.com/",
-    "urlProbe": "https://gitlab.com/api/v4/users?username={}",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Gitee": {
-    "errorType": "status_code",
-    "rank": 7631,
-    "url": "https://gitee.com/{}",
-    "urlMain": "https://gitee.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "GoodReads": {
-    "errorType": "status_code",
-    "rank": 321,
-    "url": "https://www.goodreads.com/{}",
-    "urlMain": "https://www.goodreads.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Gravatar": {
-    "errorType": "status_code",
-    "rank": 6563,
-    "url": "http://en.gravatar.com/{}",
-    "urlMain": "http://en.gravatar.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Gumroad": {
-    "errorMsg": "Page not found.",
-    "errorType": "message",
-    "rank": 6347,
-    "url": "https://www.gumroad.com/{}",
-    "urlMain": "https://www.gumroad.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "GuruShots": {
-    "errorType": "status_code",
-    "rank": 19248,
-    "url": "https://gurushots.com/{}/photos",
-    "urlMain": "https://gurushots.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "HackerNews": {
-    "errorMsg": "No such user.",
-    "errorType": "message",
-    "rank": 3348,
-    "url": "https://news.ycombinator.com/user?id={}",
-    "urlMain": "https://news.ycombinator.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "HackerOne": {
-    "errorMsg": "Page not found",
-    "errorType": "message",
-    "rank": 20695,
-    "url": "https://hackerone.com/{}",
-    "urlMain": "https://hackerone.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "HackerRank": {
-    "errorMsg": "Something went wrong",
-    "errorType": "message",
-    "rank": 3272,
-    "url": "https://hackerrank.com/{}",
-    "urlMain": "https://hackerrank.com/",
-    "username_claimed": "satznova",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "House-Mixes.com": {
-    "errorMsg": "Profile Not Found",
-    "errorType": "message",
-    "rank": 320619,
-    "url": "https://www.house-mixes.com/profile/{}",
-    "urlMain": "https://www.house-mixes.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Houzz": {
-    "errorMsg": "The page you requested was not found.",
-    "errorType": "message",
-    "rank": 2002,
-    "url": "https://houzz.com/user/{}",
-    "urlMain": "https://houzz.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "HubPages": {
-    "errorType": "status_code",
-    "rank": 3672,
-    "url": "https://hubpages.com/@{}",
-    "urlMain": "https://hubpages.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Hubski": {
-    "errorMsg": "No such user",
-    "errorType": "message",
-    "rank": 236301,
-    "url": "https://hubski.com/user/{}",
-    "urlMain": "https://hubski.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "IFTTT": {
-    "errorMsg": "The requested page or file does not exist",
-    "errorType": "message",
-    "rank": 9791,
-    "url": "https://www.ifttt.com/p/{}",
-    "urlMain": "https://www.ifttt.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "ImageShack": {
-    "errorType": "response_url",
-    "errorUrl": "https://imageshack.us/",
-    "rank": 41197,
-    "url": "https://imageshack.us/user/{}",
-    "urlMain": "https://imageshack.us/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "ImgUp.cz": {
-    "errorType": "status_code",
-    "rank": 2746389,
-    "url": "https://imgup.cz/{}",
-    "urlMain": "https://imgup.cz/",
-    "username_claimed": "adam",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Instagram": {
-    "errorMsg": "The link you followed may be broken",
-    "errorType": "message",
-    "rank": 30,
-    "url": "https://www.instagram.com/{}",
-    "urlMain": "https://www.instagram.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Instructables": {
-    "errorMsg": "404: We're sorry, things break sometimes",
-    "errorType": "message",
-    "rank": 1029,
-    "url": "https://www.instructables.com/member/{}",
-    "urlMain": "https://www.instructables.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Investing.com": {
-    "errorType": "status_code",
-    "rank": 355,
-    "url": "https://www.investing.com/traders/{}",
-    "urlMain": "https://www.investing.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Issuu": {
-    "errorType": "status_code",
-    "rank": 451,
-    "url": "https://issuu.com/{}",
-    "urlMain": "https://issuu.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Itch.io": {
-    "errorType": "status_code",
-    "rank": 2527,
-    "url": "https://{}.itch.io/",
-    "urlMain": "https://itch.io/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Jimdo": {
-    "errorType": "status_code",
-    "noPeriod": "True",
-    "rank": 40571,
-    "url": "https://{}.jimdosite.com",
-    "urlMain": "https://jimdosite.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Kaggle": {
-    "errorType": "status_code",
-    "rank": 3239,
-    "url": "https://www.kaggle.com/{}",
-    "urlMain": "https://www.kaggle.com/",
-    "username_claimed": "dansbecker",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "KanoWorld": {
-    "errorType": "status_code",
-    "rank": 179932,
-    "url": "https://api.kano.me/progress/user/{}",
-    "urlMain": "https://world.kano.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Keybase": {
-    "errorType": "status_code",
-    "rank": 29458,
-    "url": "https://keybase.io/{}",
-    "urlMain": "https://keybase.io/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Kik": {
-    "errorMsg": "The page you requested was not found",
-    "errorType": "message",
-    "rank": 450850,
-    "url": "https://ws2.kik.com/user/{}",
-    "urlMain": "http://kik.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Kongregate": {
-    "errorMsg": "Sorry, no account with that name was found.",
-    "errorType": "message",
-    "rank": 2587,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://www.kongregate.com/accounts/{}",
-    "urlMain": "https://www.kongregate.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Launchpad": {
-    "errorType": "status_code",
-    "rank": 9789,
-    "url": "https://launchpad.net/~{}",
-    "urlMain": "https://launchpad.net/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "LeetCode": {
-    "errorType": "status_code",
-    "rank": 3575,
-    "url": "https://leetcode.com/{}",
-    "urlMain": "https://leetcode.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Letterboxd": {
-    "errorMsg": "Sorry, we can\u2019t find the page you\u2019ve requested.",
-    "errorType": "message",
-    "rank": 4870,
-    "url": "https://letterboxd.com/{}",
-    "urlMain": "https://letterboxd.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "LiveJournal": {
-    "errorType": "status_code",
-    "rank": 356,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://{}.livejournal.com",
-    "urlMain": "https://www.livejournal.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "LiveLeak": {
-    "errorMsg": "channel not found",
-    "errorType": "message",
-    "rank": 2661,
-    "url": "https://www.liveleak.com/c/{}",
-    "urlMain": "https://www.liveleak.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Lobsters": {
-    "errorType": "status_code",
-    "rank": 183432,
-    "regexCheck": "[A-Za-z0-9][A-Za-z0-9_-]{0,24}",
-    "url": "https://lobste.rs/u/{}",
-    "urlMain": "https://lobste.rs/",
-    "username_claimed": "jcs",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Mastodon": {
-    "errorType": "status_code",
-    "rank": 1199668,
-    "url": "https://mstdn.io/@{}",
-    "urlMain": "https://mstdn.io/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Medium": {
-    "errorType": "status_code",
-    "rank": 69,
-    "url": "https://medium.com/@{}",
-    "urlMain": "https://medium.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "MeetMe": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.meetme.com/",
-    "rank": 25189,
-    "url": "https://www.meetme.com/{}",
-    "urlMain": "https://www.meetme.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "MixCloud": {
-    "errorType": "status_code",
-    "rank": 3030,
-    "url": "https://www.mixcloud.com/{}/",
-    "urlMain": "https://www.mixcloud.com/",
-    "urlProbe": "https://api.mixcloud.com/{}/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "MyAnimeList": {
-    "errorType": "status_code",
-    "rank": 815,
-    "url": "https://myanimelist.net/profile/{}",
-    "urlMain": "https://myanimelist.net/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Myspace": {
-    "errorType": "status_code",
-    "rank": 3477,
-    "url": "https://myspace.com/{}",
-    "urlMain": "https://myspace.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "NPM": {
-    "errorType": "status_code",
-    "rank": 4169,
-    "url": "https://www.npmjs.com/~{}",
-    "urlMain": "https://www.npmjs.com/",
-    "username_claimed": "kennethsweezy",
-    "username_unclaimed": "noonewould"
-  },
-  "NPM-Package": {
-    "errorType": "status_code",
-    "rank": 4169,
-    "url": "https://www.npmjs.com/package/{}",
-    "urlMain": "https://www.npmjs.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "NameMC (Minecraft.net skins)": {
-    "errorMsg": "Profiles: 0 results",
-    "errorType": "message",
-    "rank": 10066,
-    "url": "https://namemc.com/profile/{}",
-    "urlMain": "https://namemc.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "NationStates Nation": {
-    "errorMsg": "Was this your nation? It may have ceased to exist due to inactivity, but can rise again!",
-    "errorType": "message",
-    "rank": 39516,
-    "url": "https://nationstates.net/nation={}",
-    "urlMain": "https://nationstates.net",
-    "username_claimed": "the_holy_principality_of_saint_mark",
-    "username_unclaimed": "noonewould"
-  },
-  "NationStates Region": {
-    "errorMsg": "does not exist.",
-    "errorType": "message",
-    "rank": 39516,
-    "url": "https://nationstates.net/region={}",
-    "urlMain": "https://nationstates.net",
-    "username_claimed": "the_west_pacific",
-    "username_unclaimed": "noonewould"
-  },
-  "Newgrounds": {
-    "errorType": "status_code",
-    "rank": 4709,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://{}.newgrounds.com",
-    "urlMain": "https://newgrounds.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "OK": {
-    "errorType": "status_code",
-    "rank": 60,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_.-]*$",
-    "url": "https://ok.ru/{}",
-    "urlMain": "https://ok.ru/",
-    "username_claimed": "ok",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "OpenCollective": {
-    "errorMsg": "Open Collective - open your finances to your community",
-    "errorType": "message",
-    "rank": 48089,
-    "url": "https://opencollective.com/{}",
-    "urlMain": "https://opencollective.com/",
-    "username_claimed": "sindresorhus",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Packagist": {
-    "errorType": "response_url",
-    "errorUrl": "https://packagist.org/search/?q={}&reason=vendor_not_found",
-    "rank": 27186,
-    "url": "https://packagist.org/packages/{}/",
-    "urlMain": "https://packagist.org/",
-    "username_claimed": "psr",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Pastebin": {
-    "errorType": "response_url",
-    "errorUrl": "https://pastebin.com/index",
-    "rank": 1241,
-    "url": "https://pastebin.com/u/{}",
-    "urlMain": "https://pastebin.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Patreon": {
-    "errorType": "status_code",
-    "rank": 353,
-    "url": "https://www.patreon.com/{}",
-    "urlMain": "https://www.patreon.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Pexels": {
-    "errorType": "status_code",
-    "rank": 499,
-    "url": "https://www.pexels.com/@{}",
-    "urlMain": "https://www.pexels.com/",
-    "username_claimed": "bruno",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Photobucket": {
-    "errorType": "status_code",
-    "rank": 2952,
-    "url": "https://photobucket.com/user/{}/library",
-    "urlMain": "https://photobucket.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Pinterest": {
-    "errorType": "status_code",
-    "rank": 149,
-    "url": "https://www.pinterest.com/{}/",
-    "urlMain": "https://www.pinterest.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Pixabay": {
-    "errorType": "status_code",
-    "rank": 260,
-    "url": "https://pixabay.com/en/users/{}",
-    "urlMain": "https://pixabay.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "PlayStore": {
-    "errorType": "status_code",
-    "rank": 1,
-    "url": "https://play.google.com/store/apps/developer?id={}",
-    "urlMain": "https://play.google.com/store",
-    "username_claimed": "Facebook",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Plug.DJ": {
-    "errorType": "status_code",
-    "rank": 33806,
-    "url": "https://plug.dj/@/{}",
-    "urlMain": "https://plug.dj/",
-    "username_claimed": "plug-dj-rock",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Pokemon Showdown": {
-    "errorType": "status_code",
-    "rank": 4828,
-    "url": "https://pokemonshowdown.com/users/{}",
-    "urlMain": "https://pokemonshowdown.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Polygon": {
-    "errorType": "status_code",
-    "rank": 1214,
-    "url": "https://www.polygon.com/users/{}",
-    "urlMain": "https://www.polygon.com/",
-    "username_claimed": "swiftstickler",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "ProductHunt": {
-    "errorMsg": "Product Hunt is a curation of the best new products",
-    "errorType": "message",
-    "rank": 6199,
-    "url": "https://www.producthunt.com/@{}",
-    "urlMain": "https://www.producthunt.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Quora": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.quora.com/profile/{}",
-    "rank": 210,
-    "url": "https://www.quora.com/profile/{}",
-    "urlMain": "https://www.quora.com/",
-    "username_claimed": "Matt-Riggsby",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Rajce.net": {
-    "errorMsg": "410",
-    "errorType": "message",
-    "rank": 1685,
-    "url": "https://{}.rajce.idnes.cz/",
-    "urlMain": "https://www.rajce.idnes.cz/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Rate Your Music": {
-    "errorType": "status_code",
-    "rank": 4683,
-    "url": "https://rateyourmusic.com/~{}",
-    "urlMain": "https://rateyourmusic.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Reddit": {
-    "errorType": "status_code",
-    "rank": 19,
-    "url": "https://www.reddit.com/user/{}",
-    "urlMain": "https://www.reddit.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Repl.it": {
-    "errorMsg": "404",
-    "errorType": "message",
-    "rank": 5025,
-    "url": "https://repl.it/@{}",
-    "urlMain": "https://repl.it/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "ResearchGate": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.researchgate.net/directory/profiles",
-    "rank": 139,
-    "regexCheck": "\\w+_\\w+",
-    "url": "https://www.researchgate.net/profile/{}",
-    "urlMain": "https://www.researchgate.net/",
-    "username_claimed": "John_Smith",
-    "username_unclaimed": "noonewould_everusethis7"
-  },
-  "ReverbNation": {
-    "errorMsg": "Sorry, we couldn't find that page",
-    "errorType": "message",
-    "rank": 9275,
-    "url": "https://www.reverbnation.com/{}",
-    "urlMain": "https://www.reverbnation.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Roblox": {
-    "errorMsg": "Page cannot be found or no longer exists",
-    "errorType": "message",
-    "rank": 127,
-    "url": "https://www.roblox.com/user.aspx?username={}",
-    "urlMain": "https://www.roblox.com/",
-    "username_claimed": "bluewolfekiller",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Sbazar.cz": {
-    "errorType": "status_code",
-    "rank": 10895,
-    "url": "https://www.sbazar.cz/{}",
-    "urlMain": "https://www.sbazar.cz/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Scratch": {
-    "errorType": "status_code",
-    "rank": 470,
-    "url": "https://scratch.mit.edu/users/{}",
-    "urlMain": "https://scratch.mit.edu/",
-    "username_claimed": "griffpatch",
-    "username_unclaimed": "noonewould"
-  },
-  "Scribd": {
-    "errorMsg": "Page not found",
-    "errorType": "message",
-    "rank": 164,
-    "url": "https://www.scribd.com/{}",
-    "urlMain": "https://www.scribd.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Signal": {
-    "errorMsg": "Oops! That page doesn\u2019t exist or is private.",
-    "errorType": "message",
-    "rank": 1971912,
-    "url": "https://community.signalusers.org/u/{}",
-    "urlMain": "https://community.signalusers.org",
-    "username_claimed": "jlund",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Slack": {
-    "errorType": "status_code",
-    "rank": 407,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://{}.slack.com",
-    "urlMain": "https://slack.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "SlideShare": {
-    "errorType": "status_code",
-    "rank": 102,
-    "url": "https://slideshare.net/{}",
-    "urlMain": "https://slideshare.net/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Smashcast": {
-    "errorType": "status_code",
-    "rank": 119255,
-    "url": "https://www.smashcast.tv/api/media/live/{}",
-    "urlMain": "https://www.smashcast.tv/",
-    "username_claimed": "hello",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "SoundCloud": {
-    "errorType": "status_code",
-    "rank": 82,
-    "url": "https://soundcloud.com/{}",
-    "urlMain": "https://soundcloud.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "SourceForge": {
-    "errorType": "status_code",
-    "rank": 411,
-    "url": "https://sourceforge.net/u/{}",
-    "urlMain": "https://sourceforge.net/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Speedrun.com": {
-    "errorMsg": "not found.",
-    "errorType": "message",
-    "rank": 12070,
-    "url": "https://speedrun.com/user/{}",
-    "urlMain": "https://speedrun.com/",
-    "username_claimed": "3Tau",
-    "username_unclaimed": "noonewould"
-  },
-  "Splits.io": {
-    "errorType": "status_code",
-    "rank": 876327,
-    "url": "https://splits.io/users/{}",
-    "urlMain": "https://splits.io",
-    "username_claimed": "cambosteve",
-    "username_unclaimed": "noonewould"
-  },
-  "Spotify": {
-    "errorType": "status_code",
-    "rank": 74,
-    "url": "https://open.spotify.com/user/{}",
-    "urlMain": "https://open.spotify.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Star Citizen": {
-    "errorType": "status_code",
-    "rank": 9968,
-    "url": "https://robertsspaceindustries.com/citizens/{}",
-    "urlMain": "https://robertsspaceindustries.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Steam": {
-    "errorMsg": "The specified profile could not be found",
-    "errorType": "message",
-    "rank": 310,
-    "url": "https://steamcommunity.com/id/{}",
-    "urlMain": "https://steamcommunity.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "SteamGroup": {
-    "errorMsg": "No group could be retrieved for the given URL",
-    "errorType": "message",
-    "rank": 310,
-    "url": "https://steamcommunity.com/groups/{}",
-    "urlMain": "https://steamcommunity.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "T-MobileSupport": {
-    "errorType": "status_code",
-    "rank": 1245,
-    "url": "https://support.t-mobile.com/people/{}",
-    "urlMain": "https://support.t-mobile.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Taringa": {
-    "errorType": "status_code",
-    "rank": 855,
-    "url": "https://www.taringa.net/{}",
-    "urlMain": "https://taringa.net/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Teknik": {
-    "errorMsg": "The user does not exist",
-    "errorType": "message",
-    "rank": 362304,
-    "url": "https://user.teknik.io/{}",
-    "urlMain": "https://teknik.io/",
-    "username_claimed": "red",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Telegram": {
-    "errorMsg": "<meta property=\"twitter:title\" content=\"Telegram: Contact",
-    "errorType": "message",
-    "rank": 402,
-    "url": "https://t.me/{}",
-    "urlMain": "https://t.me/",
-    "username_claimed": "saman",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Tellonym.me": {
-    "errorType": "status_code",
-    "rank": 17877,
-    "url": "https://tellonym.me/{}",
-    "urlMain": "https://tellonym.me/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "TikTok": {
-    "errorMsg": "Couldn&#x27;t find this account",
-    "errorType": "message",
-    "rank": 907,
-    "url": "https://www.tiktok.com/@{}",
-    "urlMain": "https://www.tiktok.com/",
-    "username_claimed": "red",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Tinder": {
-    "errorMsg": "Looking for Someone?",
-    "errorType": "message",
-    "rank": 1195,
-    "url": "https://www.gotinder.com/@{}",
-    "urlMain": "https://tinder.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "TradingView": {
-    "errorType": "status_code",
-    "rank": 337,
-    "url": "https://www.tradingview.com/u/{}/",
-    "urlMain": "https://www.tradingview.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Trakt": {
-    "errorType": "status_code",
-    "rank": 6000,
-    "url": "https://www.trakt.tv/users/{}",
-    "urlMain": "https://www.trakt.tv/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Trello": {
-    "errorMsg": "model not found",
-    "errorType": "message",
-    "rank": 181,
-    "url": "https://trello.com/{}",
-    "urlMain": "https://trello.com/",
-    "urlProbe": "https://trello.com/1/Members/{}",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Trip": {
-    "errorType": "status_code",
-    "rank": 2810,
-    "url": "https://www.trip.skyscanner.com/user/{}",
-    "urlMain": "https://www.trip.skyscanner.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "TripAdvisor": {
-    "errorMsg": "This page is on vacation\u2026",
-    "errorType": "message",
-    "rank": 258,
-    "url": "https://tripadvisor.com/members/{}",
-    "urlMain": "https://tripadvisor.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Twitch": {
-    "errorType": "status_code",
-    "rank": 35,
-    "url": "https://www.twitch.tv/{}",
-    "urlMain": "https://www.twitch.tv/",
-    "urlProbe": "https://m.twitch.tv/{}",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Twitter": {
-    "errorMsg": "page doesn\u2019t exist",
-    "errorType": "message",
-    "rank": 42,
-    "url": "https://www.twitter.com/{}",
-    "urlMain": "https://www.twitter.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Ultimate-Guitar": {
-    "errorType": "status_code",
-    "rank": 655,
-    "url": "https://ultimate-guitar.com/u/{}",
-    "urlMain": "https://ultimate-guitar.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Unsplash": {
-    "errorType": "status_code",
-    "rank": 368,
-    "url": "https://unsplash.com/@{}",
-    "urlMain": "https://unsplash.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "VK": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.quora.com/profile/{}",
-    "rank": 21,
-    "url": "https://vk.com/{}",
-    "urlMain": "https://vk.com/",
-    "username_claimed": "smith",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "VSCO": {
-    "errorType": "status_code",
-    "rank": 3822,
-    "url": "https://vsco.co/{}",
-    "urlMain": "https://vsco.co/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Venmo": {
-    "errorType": "status_code",
-    "rank": 6680,
-    "url": "https://venmo.com/{}",
-    "urlMain": "https://venmo.com/",
-    "username_claimed": "jenny",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Viadeo": {
-    "errorType": "status_code",
-    "rank": 10355,
-    "url": "http://fr.viadeo.com/en/profile/{}",
-    "urlMain": "http://fr.viadeo.com/en/",
-    "username_claimed": "franck.patissier",
-    "username_unclaimed": "noonewouldeverusethis"
-  },
-  "Vimeo": {
-    "errorType": "status_code",
-    "rank": 172,
-    "url": "https://vimeo.com/{}",
-    "urlMain": "https://vimeo.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Virgool": {
-    "errorMsg": "\u06f4\u06f0\u06f4",
-    "errorType": "message",
-    "rank": 6001,
-    "url": "https://virgool.io/@{}",
-    "urlMain": "https://virgool.io/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "VirusTotal": {
-    "errorMsg": "not found",
-    "errorType": "message",
-    "rank": 5177,
-    "url": "https://www.virustotal.com/ui/users/{}/trusted_users",
-    "urlMain": "https://www.virustotal.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Wattpad": {
-    "errorMsg": "userError-404",
-    "errorType": "message",
-    "rank": 535,
-    "url": "https://www.wattpad.com/user/{}",
-    "urlMain": "https://www.wattpad.com/",
-    "username_claimed": "Dogstho7951",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "We Heart It": {
-    "errorMsg": "Oops! You've landed on a moving target!",
-    "errorType": "message",
-    "rank": 2503,
-    "url": "https://weheartit.com/{}",
-    "urlMain": "https://weheartit.com/",
-    "username_claimed": "ventivogue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "WebNode": {
-    "errorType": "status_code",
-    "rank": 15208,
-    "url": "https://{}.webnode.cz/",
-    "urlMain": "https://www.webnode.cz/",
-    "username_claimed": "radkabalcarova",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Wikidot": {
-    "errorMsg": "User does not exist.",
-    "errorType": "message",
-    "rank": 3010,
-    "url": "http://www.wikidot.com/user:info/{}",
-    "urlMain": "http://www.wikidot.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Wikipedia": {
-    "errorMsg": "If a page was recently created here, it may not be visible yet because of a delay in updating the database",
-    "errorType": "message",
-    "rank": 9,
-    "url": "https://www.wikipedia.org/wiki/User:{}",
-    "urlMain": "https://www.wikipedia.org/",
-    "username_claimed": "Hoadlck",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Wix": {
-    "errorType": "status_code",
-    "rank": 254,
-    "url": "https://{}.wix.com",
-    "urlMain": "https://wix.com/",
-    "username_claimed": "support",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "WordPress": {
-    "errorType": "response_url",
-    "errorUrl": "wordpress.com/typo/?subdomain=",
-    "rank": 41,
-    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
-    "url": "https://{}.wordpress.com/",
-    "urlMain": "https://wordpress.com",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "WordPressOrg": {
-    "errorType": "response_url",
-    "errorUrl": "https://wordpress.org",
-    "rank": 787,
-    "url": "https://profiles.wordpress.org/{}/",
-    "urlMain": "https://wordpress.org/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "YouNow": {
-    "errorMsg": "No users found",
-    "errorType": "message",
-    "rank": 14708,
-    "url": "https://www.younow.com/{}/",
-    "urlMain": "https://www.younow.com/",
-    "urlProbe": "https://api.younow.com/php/api/broadcast/info/user={}/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "YouPic": {
-    "errorType": "status_code",
-    "rank": 21840,
-    "url": "https://youpic.com/photographer/{}/",
-    "urlMain": "https://youpic.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "YouTube": {
-    "errorMsg": "Not Found",
-    "errorType": "message",
-    "rank": 2,
-    "url": "https://www.youtube.com/{}",
-    "urlMain": "https://www.youtube.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Zhihu": {
-    "errorType": "response_url",
-    "errorUrl": "https://www.zhihu.com/people/{}",
-    "rank": 169,
-    "url": "https://www.zhihu.com/people/{}",
-    "urlMain": "https://www.zhihu.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "Zomato": {
-    "errorType": "status_code",
-    "headers": {
-      "Accept-Language": "en-US,en;q=0.9"
-    },
-    "rank": 862,
-    "url": "https://www.zomato.com/{}/foodjourney",
-    "urlMain": "https://www.zomato.com/",
-    "username_claimed": "deepigoyal",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "authorSTREAM": {
-    "errorType": "status_code",
-    "rank": 8637,
-    "url": "http://www.authorstream.com/{}/",
-    "urlMain": "http://www.authorstream.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "boingboing.net": {
-    "errorType": "status_code",
-    "rank": 5207,
-    "url": "https://bbs.boingboing.net/u/{}",
-    "urlMain": "https://boingboing.net/",
-    "username_claimed": "admin",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "devRant": {
-    "errorType": "response_url",
-    "errorUrl": "https://devrant.com/",
-    "rank": 115376,
-    "url": "https://devrant.com/users/{}",
-    "urlMain": "https://devrant.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "fanpop": {
-    "errorType": "response_url",
-    "errorUrl": "http://www.fanpop.com/",
-    "rank": 10628,
-    "url": "http://www.fanpop.com/fans/{}",
-    "urlMain": "http://www.fanpop.com/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewould_everusethis7"
-  },
-  "gfycat": {
-    "errorType": "status_code",
-    "rank": 195,
-    "url": "https://gfycat.com/@{}",
-    "urlMain": "https://gfycat.com/",
-    "username_claimed": "Test",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "iMGSRC.RU": {
-    "errorType": "response_url",
-    "errorUrl": "https://imgsrc.ru/",
-    "rank": 15604,
-    "url": "https://imgsrc.ru/main/user.php?user={}",
-    "urlMain": "https://imgsrc.ru/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "last.fm": {
-    "errorType": "status_code",
-    "rank": 1587,
-    "url": "https://last.fm/user/{}",
-    "urlMain": "https://last.fm/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "mixer.com": {
-    "errorType": "status_code",
-    "rank": 1358,
-    "url": "https://mixer.com/{}",
-    "urlMain": "https://mixer.com/",
-    "urlProbe": "https://mixer.com/api/v1/channels/{}",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "osu!": {
-    "errorType": "status_code",
-    "rank": 3452,
-    "url": "https://osu.ppy.sh/users/{}",
-    "urlMain": "https://osu.ppy.sh/",
-    "username_claimed": "blue",
-    "username_unclaimed": "noonewouldeverusethis7"
-  },
-  "segmentfault": {
-    "errorType": "status_code",
-    "rank": 777,
-    "url": "https://segmentfault.com/u/{}",
-    "urlMain": "https://segmentfault.com/",
-    "username_claimed": "bule",
-    "username_unclaimed": "noonewouldeverusethis7"
-  }
+{
+  "2Dimensions": {
+    "errorType": "status_code",
+    "url": "https://2Dimensions.com/a/{}",
+    "urlMain": "https://2Dimensions.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "3dnews": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.",
+    "errorType": "message",
+    "url": "http://forum.3dnews.ru/member.php?username={}",
+    "urlMain": "http://forum.3dnews.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "500px": {
+    "errorMsg": "No message available",
+    "errorType": "message",
+    "url": "https://500px.com/p/{}",
+    "urlMain": "https://500px.com/",
+    "urlProbe": "https://api.500px.com/graphql?operationName=ProfileRendererQuery&variables=%7B%22username%22%3A%22{}%22%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%224d02ff5c13927a3ac73b3eef306490508bc765956940c31051468cf30402a503%22%7D%7D",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "7Cups": {
+    "errorType": "status_code",
+    "url": "https://www.7cups.com/@{}",
+    "urlMain": "https://www.7cups.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "9GAG": {
+    "errorType": "status_code",
+    "url": "https://www.9gag.com/u/{}",
+    "urlMain": "https://www.9gag.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "About.me": {
+    "errorType": "status_code",
+    "url": "https://about.me/{}",
+    "urlMain": "https://about.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Academia.edu": {
+    "errorType": "status_code",
+    "regexCheck": "^[^.]*$",
+    "url": "https://independent.academia.edu/{}",
+    "urlMain": "https://www.academia.edu/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Alik.cz": {
+    "errorType": "status_code",
+    "url": "https://www.alik.cz/u/{}",
+    "urlMain": "https://www.alik.cz/",
+    "username_claimed": "julian",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "AllTrails": {
+    "errorMsg": "User could not be found.",
+    "errorType": "message",
+    "url": "https://www.alltrails.com/members/{}",
+    "urlMain": "https://www.alltrails.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Anobii": {
+    "errorType": "response_url",
+    "url": "https://www.anobii.com/{}/profile",
+    "urlMain": "https://www.anobii.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Apple Discussions": {
+    "errorMsg": "The page you tried was not found. You may have used an outdated link or may have typed the address (URL) incorrectly.",
+    "errorType": "message",
+    "url": "https://discussions.apple.com/profile/{}",
+    "urlMain": "https://discussions.apple.com",
+    "username_claimed": "jason",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Archive.org": {
+    "errorMsg": "cannot find account",
+    "errorType": "message",
+    "url": "https://archive.org/details/@{}",
+    "urlMain": "https://archive.org",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewould"
+  },
+  "Asciinema": {
+    "errorType": "status_code",
+    "url": "https://asciinema.org/~{}",
+    "urlMain": "https://asciinema.org",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Ask Fedora": {
+    "errorType": "status_code",
+    "url": "https://ask.fedoraproject.org/u/{}",
+    "urlMain": "https://ask.fedoraproject.org/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "AskFM": {
+    "errorMsg": "Well, apparently not anymore.",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z0-9_]{3,40}$",
+    "url": "https://ask.fm/{}",
+    "urlMain": "https://ask.fm/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Atom Discussions": {
+    "errorMsg": "Oops! That page doesn\u2019t exist or is private.",
+    "errorType": "message",
+    "url": "https://discuss.atom.io/u/{}/summary",
+    "urlMain": "https://discuss.atom.io",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Audiojungle": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z0-9_]+$",
+    "url": "https://audiojungle.net/user/{}",
+    "urlMain": "https://audiojungle.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Avizo": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.avizo.cz/",
+    "url": "https://www.avizo.cz/{}/",
+    "urlMain": "https://www.avizo.cz/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "BLIP.fm": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z0-9_]{1,30}$",
+    "url": "https://blip.fm/{}",
+    "urlMain": "https://blip.fm/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "BOOTH": {
+    "errorType": "response_url",
+    "errorUrl": "https://booth.pm/",
+    "url": "https://{}.booth.pm/",
+    "urlMain": "https://booth.pm/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Badoo": {
+    "errorType": "status_code",
+    "url": "https://badoo.com/profile/{}",
+    "urlMain": "https://badoo.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Bandcamp": {
+    "errorType": "status_code",
+    "url": "https://www.bandcamp.com/{}",
+    "urlMain": "https://www.bandcamp.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Bazar.cz": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.bazar.cz/error404.aspx",
+    "url": "https://www.bazar.cz/{}/",
+    "urlMain": "https://www.bazar.cz/",
+    "username_claimed": "pianina",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Behance": {
+    "errorType": "status_code",
+    "url": "https://www.behance.net/{}",
+    "urlMain": "https://www.behance.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "BinarySearch": {
+    "errorMsg": "{}",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z0-9-_]{1,15}$",
+    "url": "https://binarysearch.io/@/{}",
+    "urlMain": "https://binarysearch.io/",
+    "urlProbe": "https://binarysearch.io/api/users/{}/profile",
+    "username_claimed": "Eyes_Wide_Shut",
+    "username_unclaimed": "hihowareyou101"
+  },
+  "BitBucket": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z0-9-_]{1,30}$",
+    "url": "https://bitbucket.org/{}/",
+    "urlMain": "https://bitbucket.org/",
+    "username_claimed": "white",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "BitCoinForum": {
+    "errorMsg": "The user whose profile you are trying to view does not exist.",
+    "errorType": "message",
+    "url": "https://bitcoinforum.com/profile/{}",
+    "urlMain": "https://bitcoinforum.com",
+    "username_claimed": "bitcoinforum.com",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Blogger": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://{}.blogspot.com",
+    "urlMain": "https://www.blogger.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "BodyBuilding": {
+    "errorType": "response_url",
+    "errorUrl": "https://bodyspace.bodybuilding.com/",
+    "url": "https://bodyspace.bodybuilding.com/{}",
+    "urlMain": "https://bodyspace.bodybuilding.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Bookcrossing": {
+    "errorType": "status_code",
+    "url": "https://www.bookcrossing.com/mybookshelf/{}/",
+    "urlMain": "https://www.bookcrossing.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "BuyMeACoffee": {
+    "errorType": "status_code",
+    "url": "https://buymeacoff.ee/{}",
+    "urlMain": "https://www.buymeacoffee.com/",
+    "urlProbe": "https://www.buymeacoffee.com/{}",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "BuzzFeed": {
+    "errorType": "status_code",
+    "url": "https://buzzfeed.com/{}",
+    "urlMain": "https://buzzfeed.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "xgtrq"
+  },
+  "CNET": {
+    "errorType": "status_code",
+    "url": "https://www.cnet.com/profiles/{}/",
+    "urlMain": "https://www.cnet.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "CapFriendly": {
+    "errorMsg": "<div class=\"err show p5\">No results found</div>",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-z][a-zA-Z0-9_]{2,79}$",
+    "url": "https://www.capfriendly.com/users/{}",
+    "urlMain": "https://www.capfriendly.com/",
+    "username_claimed": "thisactuallyexists",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Carbonmade": {
+    "errorType": "response_url",
+    "errorUrl": "https://carbonmade.com/fourohfour?domain={}.carbonmade.com",
+    "url": "https://{}.carbonmade.com",
+    "urlMain": "https://carbonmade.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Career.habr": {
+    "errorMsg": "<h1>\u041e\u0448\u0438\u0431\u043a\u0430 404</h1>",
+    "errorType": "message",
+    "url": "https://career.habr.com/{}",
+    "urlMain": "https://career.habr.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Cent": {
+    "errorMsg": "<title>Cent</title>",
+    "errorType": "message",
+    "url": "https://beta.cent.co/@{}",
+    "urlMain": "https://cent.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Championat": {
+    "errorType": "status_code",
+    "url": "https://www.championat.com/user/{}",
+    "urlMain": "https://www.championat.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Chatujme.cz": {
+    "errorMsg": "Neexistujic\u00ed profil",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z][a-zA-Z1-9_-]*$",
+    "url": "https://profil.chatujme.cz/{}",
+    "urlMain": "https://chatujme.cz/",
+    "username_claimed": "david",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Chess": {
+    "errorMsg": "Missing page... somebody made a wrong move.",
+    "errorType": "message",
+    "url": "https://www.chess.com/member/{}",
+    "urlMain": "https://www.chess.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Cloob": {
+    "errorType": "status_code",
+    "url": "https://www.cloob.com/name/{}",
+    "urlMain": "https://www.cloob.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "CloudflareCommunity": {
+    "errorType": "status_code",
+    "url": "https://community.cloudflare.com/u/{}",
+    "urlMain": "https://community.cloudflare.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Clozemaster": {
+    "errorMsg": "Oh no! Player not found.",
+    "errorType": "message",
+    "url": "https://www.clozemaster.com/players/{}",
+    "urlMain": "https://www.clozemaster.com",
+    "username_claimed": "green",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Codecademy": {
+    "errorType": "status_code",
+    "url": "https://www.codecademy.com/profiles/{}",
+    "urlMain": "https://www.codecademy.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Codechef": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.codechef.com/",
+    "url": "https://www.codechef.com/users/{}",
+    "urlMain": "https://www.codechef.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Codepen": {
+    "errorType": "status_code",
+    "url": "https://codepen.io/{}",
+    "urlMain": "https://codepen.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Codewars": {
+    "errorType": "status_code",
+    "url": "https://www.codewars.com/users/{}",
+    "urlMain": "https://www.codewars.com",
+    "username_claimed": "example",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "ColourLovers": {
+    "errorType": "status_code",
+    "url": "https://www.colourlovers.com/lover/{}",
+    "urlMain": "https://www.colourlovers.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Contently": {
+    "errorMsg": "We can't find that page!",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://{}.contently.com/",
+    "urlMain": "https://contently.com/",
+    "username_claimed": "jordanteicher",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Coroflot": {
+    "errorType": "status_code",
+    "url": "https://www.coroflot.com/{}",
+    "urlMain": "https://coroflot.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Countable": {
+    "errorType": "status_code",
+    "url": "https://www.countable.us/{}",
+    "urlMain": "https://www.countable.us/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Cracked": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.cracked.com/",
+    "url": "https://www.cracked.com/members/{}/",
+    "urlMain": "https://www.cracked.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Crevado": {
+    "errorType": "status_code",
+    "url": "https://{}.crevado.com",
+    "urlMain": "https://crevado.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "DEV Community": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://dev.to/{}",
+    "urlMain": "https://dev.to/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "DailyMotion": {
+    "errorType": "status_code",
+    "url": "https://www.dailymotion.com/{}",
+    "urlMain": "https://www.dailymotion.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Designspiration": {
+    "errorType": "status_code",
+    "url": "https://www.designspiration.net/{}/",
+    "urlMain": "https://www.designspiration.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "DeviantART": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://{}.deviantart.com",
+    "urlMain": "https://deviantart.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Discogs": {
+    "errorType": "status_code",
+    "url": "https://www.discogs.com/user/{}",
+    "urlMain": "https://www.discogs.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Discuss.Elastic.co": {
+    "errorType": "status_code",
+    "url": "https://discuss.elastic.co/u/{}",
+    "urlMain": "https://discuss.elastic.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Disqus": {
+    "errorType": "status_code",
+    "url": "https://disqus.com/{}",
+    "urlMain": "https://disqus.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Docker Hub": {
+    "errorType": "status_code",
+    "url": "https://hub.docker.com/u/{}/",
+    "urlMain": "https://hub.docker.com/",
+    "urlProbe": "https://hub.docker.com/v2/users/{}/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Dribbble": {
+    "errorMsg": "Whoops, that page is gone.",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://dribbble.com/{}",
+    "urlMain": "https://dribbble.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Duolingo": {
+    "errorMsg": "{\"users\":[]}",
+    "errorType": "message",
+    "url": "https://www.duolingo.com/profile/{}",
+    "urlMain": "https://duolingo.com/",
+    "urlProbe": "https://www.duolingo.com/2017-06-30/users?username={}",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Ebay": {
+    "errorMsg": "<title>eBay Profile - error</title>",
+    "errorType": "message",
+    "url": "https://www.ebay.com/usr/{}",
+    "urlMain": "https://www.ebay.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Ello": {
+    "errorMsg": "We couldn't find the page you're looking for",
+    "errorType": "message",
+    "url": "https://ello.co/{}",
+    "urlMain": "https://ello.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Etsy": {
+    "errorType": "status_code",
+    "url": "https://www.etsy.com/shop/{}",
+    "urlMain": "https://www.etsy.com/",
+    "username_claimed": "JennyKrafts",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Euw": {
+    "errorMsg": "This summoner is not registered at OP.GG. Please check spelling.",
+    "errorType": "message",
+    "url": "https://euw.op.gg/summoner/userName={}",
+    "urlMain": "https://euw.op.gg/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "EyeEm": {
+    "errorType": "status_code",
+    "url": "https://www.eyeem.com/u/{}",
+    "urlMain": "https://www.eyeem.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "F3.cool": {
+    "errorType": "status_code",
+    "url": "https://f3.cool/{}/",
+    "urlMain": "https://f3.cool/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Facebook": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z0-9\\.]{3,49}(?<!\\.com|\\.org|\\.net)$",
+    "url": "https://www.facebook.com/{}",
+    "urlMain": "https://www.facebook.com/",
+    "urlProbe": "https://www.facebook.com/{}/videos/",
+    "username_claimed": "hackerman",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Facenama": {
+    "errorType": "response_url",
+    "errorUrl": "https://facenama.com/404.html",
+    "regexCheck": "^[-a-zA-Z0-9_]+$",
+    "url": "https://facenama.com/{}",
+    "urlMain": "https://facenama.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis77"
+  },
+  "Fandom": {
+    "errorType": "status_code",
+    "url": "https://www.fandom.com/u/{}",
+    "urlMain": "https://www.fandom.com/",
+    "username_claimed": "Jungypoo",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Flickr": {
+    "errorType": "status_code",
+    "url": "https://www.flickr.com/people/{}",
+    "urlMain": "https://www.flickr.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Flightradar24": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z0-9_]{3,20}$",
+    "url": "https://my.flightradar24.com/{}",
+    "urlMain": "https://www.flightradar24.com/",
+    "username_claimed": "jebbrooks",
+    "username_unclaimed": "xgtrq"
+  },
+  "Flipboard": {
+    "errorType": "status_code",
+    "regexCheck": "^([a-zA-Z0-9_]){1,15}$",
+    "url": "https://flipboard.com/@{}",
+    "urlMain": "https://flipboard.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewould"
+  },
+  "Football": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "url": "https://www.rusfootball.info/user/{}/",
+    "urlMain": "https://www.rusfootball.info/",
+    "username_claimed": "solo87",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "FortniteTracker": {
+    "errorType": "status_code",
+    "url": "https://fortnitetracker.com/profile/all/{}",
+    "urlMain": "https://fortnitetracker.com/challenges",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Freelance.habr": {
+    "errorMsg": "<div class=\"icon_user_locked\"></div>",
+    "errorType": "message",
+    "regexCheck": "^((?!\\.).)*$",
+    "url": "https://freelance.habr.com/freelancers/{}",
+    "urlMain": "https://freelance.habr.com/",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Freelancer.com": {
+    "errorMsg": "\"users\":{}",
+    "errorType": "message",
+    "url": "https://www.freelancer.com/api/users/0.1/users?usernames%5B%5D={}&compact=true",
+    "urlMain": "https://www.freelancer.com/",
+    "username_claimed": "red0xff",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Freesound": {
+    "errorType": "status_code",
+    "url": "https://freesound.org/people/{}/",
+    "urlMain": "https://freesound.org/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "GDProfiles": {
+    "errorType": "status_code",
+    "url": "https://gdprofiles.com/{}",
+    "urlMain": "https://gdprofiles.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Gamespot": {
+    "errorType": "status_code",
+    "url": "https://www.gamespot.com/profile/{}/",
+    "urlMain": "https://www.gamespot.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "GetMyUni": {
+    "errorType": "status_code",
+    "url": "https://www.getmyuni.com/user/{}",
+    "urlMain": "https://getmyuni.com/",
+    "username_claimed": "Upneet.Grover17",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Giphy": {
+    "errorType": "status_code",
+    "url": "https://giphy.com/{}",
+    "urlMain": "https://giphy.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "GitHub": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$",
+    "url": "https://www.github.com/{}",
+    "urlMain": "https://www.github.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "GitLab": {
+    "errorMsg": "[]",
+    "errorType": "message",
+    "url": "https://gitlab.com/{}",
+    "urlMain": "https://gitlab.com/",
+    "urlProbe": "https://gitlab.com/api/v4/users?username={}",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Gitee": {
+    "errorType": "status_code",
+    "url": "https://gitee.com/{}",
+    "urlMain": "https://gitee.com/",
+    "username_claimed": "wizzer",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "GoodReads": {
+    "errorType": "status_code",
+    "url": "https://www.goodreads.com/{}",
+    "urlMain": "https://www.goodreads.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Gravatar": {
+    "errorType": "status_code",
+    "regexCheck": "^((?!\\.).)*$",
+    "url": "http://en.gravatar.com/{}",
+    "urlMain": "http://en.gravatar.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Gumroad": {
+    "errorMsg": "Page not found.",
+    "errorType": "message",
+    "url": "https://www.gumroad.com/{}",
+    "urlMain": "https://www.gumroad.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "GunsAndAmmo": {
+    "errorType": "status_code",
+    "url": "https://forums.gunsandammo.com/profile/{}",
+    "urlMain": "https://gunsandammo.com/",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "GuruShots": {
+    "errorType": "status_code",
+    "url": "https://gurushots.com/{}/photos",
+    "urlMain": "https://gurushots.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "HackTheBox": {
+    "errorType": "status_code",
+    "url": "https://forum.hackthebox.eu/profile/{}",
+    "urlMain": "https://forum.hackthebox.eu/",
+    "username_claimed": "angar",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Hackaday": {
+    "errorType": "status_code",
+    "url": "https://hackaday.io/{}",
+    "urlMain": "https://hackaday.io/",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "HackerNews": {
+    "errorMsg": "No such user.",
+    "errorType": "message",
+    "url": "https://news.ycombinator.com/user?id={}",
+    "urlMain": "https://news.ycombinator.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "HackerOne": {
+    "errorMsg": "Page not found",
+    "errorType": "message",
+    "url": "https://hackerone.com/{}",
+    "urlMain": "https://hackerone.com/",
+    "username_claimed": "stok",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "HackerRank": {
+    "errorMsg": "Something went wrong",
+    "errorType": "message",
+    "url": "https://hackerrank.com/{}",
+    "urlMain": "https://hackerrank.com/",
+    "username_claimed": "satznova",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "House-Mixes.com": {
+    "errorMsg": "Profile Not Found",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$",
+    "url": "https://www.house-mixes.com/profile/{}",
+    "urlMain": "https://www.house-mixes.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Houzz": {
+    "errorMsg": "The page you requested was not found.",
+    "errorType": "message",
+    "url": "https://houzz.com/user/{}",
+    "urlMain": "https://houzz.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "HubPages": {
+    "errorType": "status_code",
+    "url": "https://hubpages.com/@{}",
+    "urlMain": "https://hubpages.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Hubski": {
+    "errorMsg": "No such user",
+    "errorType": "message",
+    "url": "https://hubski.com/user/{}",
+    "urlMain": "https://hubski.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "ICQ": {
+    "errorMsg": "Profile not found",
+    "errorType": "message",
+    "url": "https://icq.im/{}",
+    "urlMain": "https://icq.com/",
+    "username_claimed": "Micheal",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "IFTTT": {
+    "errorMsg": "The requested page or file does not exist",
+    "errorType": "message",
+    "regexCheck": "^[A-Za-z0-9]{3,35}$",
+    "url": "https://www.ifttt.com/p/{}",
+    "urlMain": "https://www.ifttt.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "ImgUp.cz": {
+    "errorType": "status_code",
+    "url": "https://imgup.cz/{}",
+    "urlMain": "https://imgup.cz/",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Imgur": {
+    "errorType": "status_code",
+    "url": "https://imgur.com/user/{}",
+    "urlMain": "https://imgur.com/",
+    "urlProbe": "https://api.imgur.com/account/v1/accounts/{}?client_id=546c25a59c58ad7",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Instagram": {
+    "errorMsg": "href=\"/static/bundles/metro/HttpErrorPage.js/",
+    "errorType": "message",
+    "url": "https://www.instagram.com/{}",
+    "urlMain": "https://www.instagram.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Instructables": {
+    "errorType": "status_code",
+    "url": "https://www.instructables.com/member/{}",
+    "urlMain": "https://www.instructables.com/",
+    "urlProbe": "https://www.instructables.com/json-api/showAuthorExists?screenName={}",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Issuu": {
+    "errorType": "status_code",
+    "url": "https://issuu.com/{}",
+    "urlMain": "https://issuu.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Itch.io": {
+    "errorType": "status_code",
+    "url": "https://{}.itch.io/",
+    "urlMain": "https://itch.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Jimdo": {
+    "errorType": "status_code",
+    "noPeriod": "True",
+    "url": "https://{}.jimdosite.com",
+    "urlMain": "https://jimdosite.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Kaggle": {
+    "errorType": "status_code",
+    "url": "https://www.kaggle.com/{}",
+    "urlMain": "https://www.kaggle.com/",
+    "username_claimed": "dansbecker",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Kali community": {
+    "errorMsg": "This user has not registered and therefore does not have a profile to view.",
+    "errorType": "message",
+    "url": "https://forums.kali.org/member.php?username={}",
+    "urlMain": "https://forums.kali.org/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Keybase": {
+    "errorType": "status_code",
+    "url": "https://keybase.io/{}",
+    "urlMain": "https://keybase.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Kik": {
+    "errorMsg": "The page you requested was not found",
+    "errorType": "message",
+    "url": "https://kik.me/{}",
+    "urlMain": "http://kik.me/",
+    "urlProbe": "https://ws2.kik.com/user/{}",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Kongregate": {
+    "errorMsg": "Sorry, no account with that name was found.",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://www.kongregate.com/accounts/{}",
+    "urlMain": "https://www.kongregate.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "LOR": {
+    "errorType": "status_code",
+    "url": "https://www.linux.org.ru/people/{}/profile",
+    "urlMain": "https://linux.org.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Launchpad": {
+    "errorType": "status_code",
+    "url": "https://launchpad.net/~{}",
+    "urlMain": "https://launchpad.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "LeetCode": {
+    "errorType": "status_code",
+    "url": "https://leetcode.com/{}",
+    "urlMain": "https://leetcode.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Letterboxd": {
+    "errorMsg": "Sorry, we can\u2019t find the page you\u2019ve requested.",
+    "errorType": "message",
+    "url": "https://letterboxd.com/{}",
+    "urlMain": "https://letterboxd.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Lichess": {
+    "errorMsg": "Page not found!",
+    "errorType": "message",
+    "url": "https://lichess.org/@/{}",
+    "urlMain": "https://lichess.org",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "LiveJournal": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://{}.livejournal.com",
+    "urlMain": "https://www.livejournal.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "LiveLeak": {
+    "errorMsg": "channel not found",
+    "errorType": "message",
+    "url": "https://www.liveleak.com/c/{}",
+    "urlMain": "https://www.liveleak.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Lobsters": {
+    "errorType": "status_code",
+    "regexCheck": "[A-Za-z0-9][A-Za-z0-9_-]{0,24}",
+    "url": "https://lobste.rs/u/{}",
+    "urlMain": "https://lobste.rs/",
+    "username_claimed": "jcs",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Lolchess": {
+    "errorMsg": "No search results",
+    "errorType": "message",
+    "url": "https://lolchess.gg/profile/na/{}",
+    "urlMain": "https://lolchess.gg/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Medium": {
+    "errorMsg": "<body",
+    "errorType": "message",
+    "url": "https://medium.com/@{}",
+    "urlMain": "https://medium.com/",
+    "urlProbe": "https://medium.com/feed/@{}",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Memrise": {
+    "errorType": "status_code",
+    "url": "https://www.memrise.com/user/{}/",
+    "urlMain": "https://www.memrise.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "MixCloud": {
+    "errorType": "status_code",
+    "url": "https://www.mixcloud.com/{}/",
+    "urlMain": "https://www.mixcloud.com/",
+    "urlProbe": "https://api.mixcloud.com/{}/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Munzee": {
+    "errorType": "status_code",
+    "url": "https://www.munzee.com/m/{}",
+    "urlMain": "https://www.munzee.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "MyAnimeList": {
+    "errorType": "status_code",
+    "url": "https://myanimelist.net/profile/{}",
+    "urlMain": "https://myanimelist.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "MyMiniFactory": {
+    "errorType": "status_code",
+    "url": "https://www.myminifactory.com/users/{}",
+    "urlMain": "https://www.myminifactory.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Myspace": {
+    "errorType": "status_code",
+    "url": "https://myspace.com/{}",
+    "urlMain": "https://myspace.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "NICommunityForum": {
+    "errorMsg": "The specified member cannot be found",
+    "errorType": "message",
+    "url": "https://www.native-instruments.com/forum/members?username={}",
+    "urlMain": "https://www.native-instruments.com/forum/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "NameMC (Minecraft.net skins)": {
+    "errorMsg": "Profiles: 0 results",
+    "errorType": "message",
+    "url": "https://namemc.com/profile/{}",
+    "urlMain": "https://namemc.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "NationStates Nation": {
+    "errorMsg": "Was this your nation? It may have ceased to exist due to inactivity, but can rise again!",
+    "errorType": "message",
+    "url": "https://nationstates.net/nation={}",
+    "urlMain": "https://nationstates.net",
+    "username_claimed": "the_holy_principality_of_saint_mark",
+    "username_unclaimed": "noonewould"
+  },
+  "NationStates Region": {
+    "errorMsg": "does not exist.",
+    "errorType": "message",
+    "url": "https://nationstates.net/region={}",
+    "urlMain": "https://nationstates.net",
+    "username_claimed": "the_west_pacific",
+    "username_unclaimed": "noonewould"
+  },
+  "Naver": {
+    "errorType": "status_code",
+    "url": "https://blog.naver.com/{}",
+    "urlMain": "https://naver.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewould"
+  },
+  "Newgrounds": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://{}.newgrounds.com",
+    "urlMain": "https://newgrounds.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Nightbot": {
+    "errorType": "status_code",
+    "url": "https://nightbot.tv/t/{}/commands",
+    "urlMain": "https://nightbot.tv/",
+    "urlProbe": "https://api.nightbot.tv/1/channels/t/{}",
+    "username_claimed": "green",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "NotABug.org": {
+    "errorType": "status_code",
+    "url": "https://notabug.org/{}",
+    "urlMain": "https://notabug.org/",
+    "urlProbe": "https://notabug.org/{}/followers",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "OK": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_.-]*$",
+    "url": "https://ok.ru/{}",
+    "urlMain": "https://ok.ru/",
+    "username_claimed": "ok",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "OpenStreetMap": {
+    "errorType": "status_code",
+    "url": "https://www.openstreetmap.org/user/{}",
+    "urlMain": "https://www.openstreetmap.org/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Opensource": {
+    "errorType": "status_code",
+    "url": "https://opensource.com/users/{}",
+    "urlMain": "https://opensource.com/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Oracle Community": {
+    "errorType": "status_code",
+    "url": "https://community.oracle.com/people/{}",
+    "urlMain": "https://community.oracle.com",
+    "username_claimed": "dev",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Otzovik": {
+    "errorType": "status_code",
+    "url": "https://otzovik.com/profile/{}",
+    "urlMain": "https://otzovik.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "OurDJTalk": {
+    "errorMsg": "The specified member cannot be found",
+    "errorType": "message",
+    "url": "https://ourdjtalk.com/members?username={}",
+    "urlMain": "https://ourdjtalk.com/",
+    "username_claimed": "steve",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "PCGamer": {
+    "errorMsg": "The specified member cannot be found. Please enter a member's entire name.",
+    "errorType": "message",
+    "url": "https://forums.pcgamer.com/members/?username={}",
+    "urlMain": "https://pcgamer.com",
+    "username_claimed": "admin",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "PCPartPicker": {
+    "errorType": "status_code",
+    "url": "https://pcpartpicker.com/user/{}",
+    "urlMain": "https://pcpartpicker.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "PSNProfiles.com": {
+    "errorType": "response_url",
+    "errorUrl": "https://psnprofiles.com/?psnId={}",
+    "url": "https://psnprofiles.com/{}",
+    "urlMain": "https://psnprofiles.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Packagist": {
+    "errorType": "response_url",
+    "errorUrl": "https://packagist.org/search/?q={}&reason=vendor_not_found",
+    "url": "https://packagist.org/packages/{}/",
+    "urlMain": "https://packagist.org/",
+    "username_claimed": "psr",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Pastebin": {
+    "errorMsg": "Not Found (#404)",
+    "errorType": "message",
+    "url": "https://pastebin.com/u/{}",
+    "urlMain": "https://pastebin.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Patreon": {
+    "errorType": "status_code",
+    "url": "https://www.patreon.com/{}",
+    "urlMain": "https://www.patreon.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Periscope": {
+    "errorType": "status_code",
+    "url": "https://www.periscope.tv/{}/",
+    "urlMain": "https://www.periscope.tv/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Pinkbike": {
+    "errorType": "status_code",
+    "url": "https://www.pinkbike.com/u/{}/",
+    "urlMain": "https://www.pinkbike.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Pinterest": {
+    "errorType": "status_code",
+    "url": "https://www.pinterest.com/{}/",
+    "urlMain": "https://www.pinterest.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "PlayStore": {
+    "errorType": "status_code",
+    "url": "https://play.google.com/store/apps/developer?id={}",
+    "urlMain": "https://play.google.com/store",
+    "username_claimed": "Facebook",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Pling": {
+    "errorMsg": "Resource not found",
+    "errorType": "message",
+    "url": "https://www.pling.com/u/{}/",
+    "urlMain": "https://www.pling.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Plug.DJ": {
+    "errorType": "status_code",
+    "url": "https://plug.dj/@/{}",
+    "urlMain": "https://plug.dj/",
+    "username_claimed": "plug-dj-rock",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Pokemon Showdown": {
+    "errorType": "status_code",
+    "url": "https://pokemonshowdown.com/users/{}",
+    "urlMain": "https://pokemonshowdown.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Polarsteps": {
+    "errorType": "status_code",
+    "url": "https://polarsteps.com/{}",
+    "urlMain": "https://polarsteps.com/",
+    "urlProbe": "https://api.polarsteps.com/users/byusername/{}",
+    "username_claimed": "james",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Polygon": {
+    "errorType": "status_code",
+    "url": "https://www.polygon.com/users/{}",
+    "urlMain": "https://www.polygon.com/",
+    "username_claimed": "swiftstickler",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "ProductHunt": {
+    "errorMsg": "Page Not Found",
+    "errorType": "message",
+    "url": "https://www.producthunt.com/@{}",
+    "urlMain": "https://www.producthunt.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "PromoDJ": {
+    "errorType": "status_code",
+    "url": "http://promodj.com/{}",
+    "urlMain": "http://promodj.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "PyPi": {
+    "errorType": "status_code",
+    "url": "https://pypi.org/user/{}",
+    "urlMain": "https://pypi.org",
+    "username_claimed": "Blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Quizlet": {
+    "errorMsg": "Page Unavailable",
+    "errorType": "message",
+    "url": "https://quizlet.com/{}",
+    "urlMain": "https://quizlet.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Quora": {
+    "errorMsg": "Page Not Found",
+    "errorType": "message",
+    "url": "https://www.quora.com/profile/{}",
+    "urlMain": "https://www.quora.com/",
+    "username_claimed": "Matt-Riggsby",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Raidforums": {
+    "errorType": "status_code",
+    "url": "https://raidforums.com/User-{}",
+    "urlMain": "https://raidforums.com/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Rajce.net": {
+    "errorType": "status_code",
+    "url": "https://{}.rajce.idnes.cz/",
+    "urlMain": "https://www.rajce.idnes.cz/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Rate Your Music": {
+    "errorType": "status_code",
+    "url": "https://rateyourmusic.com/~{}",
+    "urlMain": "https://rateyourmusic.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Realmeye": {
+    "errorMsg": "Sorry, but we either:",
+    "errorType": "message",
+    "url": "https://www.realmeye.com/player/{}",
+    "urlMain": "https://www.realmeye.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Redbubble": {
+    "errorType": "status_code",
+    "url": "https://www.redbubble.com/people/{}",
+    "urlMain": "https://www.redbubble.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis77777"
+  },
+  "Reddit": {
+    "errorType": "status_code",
+    "url": "https://www.reddit.com/user/{}",
+    "urlMain": "https://www.reddit.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Repl.it": {
+    "errorType": "status_code",
+    "url": "https://repl.it/@{}",
+    "urlMain": "https://repl.it/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "ResearchGate": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.researchgate.net/directory/profiles",
+    "regexCheck": "\\w+_\\w+",
+    "url": "https://www.researchgate.net/profile/{}",
+    "urlMain": "https://www.researchgate.net/",
+    "username_claimed": "John_Smith",
+    "username_unclaimed": "noonewould_everusethis7"
+  },
+  "ReverbNation": {
+    "errorMsg": "Sorry, we couldn't find that page",
+    "errorType": "message",
+    "url": "https://www.reverbnation.com/{}",
+    "urlMain": "https://www.reverbnation.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Roblox": {
+    "errorMsg": "Page cannot be found or no longer exists",
+    "errorType": "message",
+    "url": "https://www.roblox.com/user.aspx?username={}",
+    "urlMain": "https://www.roblox.com/",
+    "username_claimed": "bluewolfekiller",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "RubyGems": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]{1,40}",
+    "url": "https://rubygems.org/profiles/{}",
+    "urlMain": "https://rubygems.org/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Sbazar.cz": {
+    "errorType": "status_code",
+    "url": "https://www.sbazar.cz/{}",
+    "urlMain": "https://www.sbazar.cz/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Scratch": {
+    "errorType": "status_code",
+    "url": "https://scratch.mit.edu/users/{}",
+    "urlMain": "https://scratch.mit.edu/",
+    "username_claimed": "griffpatch",
+    "username_unclaimed": "noonewould"
+  },
+  "Scribd": {
+    "errorMsg": "Page not found",
+    "errorType": "message",
+    "url": "https://www.scribd.com/{}",
+    "urlMain": "https://www.scribd.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "ShitpostBot5000": {
+    "errorType": "status_code",
+    "url": "https://www.shitpostbot.com/user/{}",
+    "urlMain": "https://www.shitpostbot.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Signal": {
+    "errorMsg": "Oops! That page doesn\u2019t exist or is private.",
+    "errorType": "message",
+    "url": "https://community.signalusers.org/u/{}",
+    "urlMain": "https://community.signalusers.org",
+    "username_claimed": "jlund",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Slack": {
+    "errorType": "status_code",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://{}.slack.com",
+    "urlMain": "https://slack.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Slashdot": {
+    "errorMsg": "user you requested does not exist",
+    "errorType": "message",
+    "url": "https://slashdot.org/~{}",
+    "urlMain": "https://slashdot.org",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SlideShare": {
+    "errorType": "status_code",
+    "url": "https://slideshare.net/{}",
+    "urlMain": "https://slideshare.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Smashcast": {
+    "errorType": "status_code",
+    "url": "https://www.smashcast.tv/api/media/live/{}",
+    "urlMain": "https://www.smashcast.tv/",
+    "username_claimed": "hello",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Smule": {
+    "errorType": "status_code",
+    "url": "https://www.smule.com/{}",
+    "urlMain": "https://www.smule.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SoundCloud": {
+    "errorType": "status_code",
+    "url": "https://soundcloud.com/{}",
+    "urlMain": "https://soundcloud.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SourceForge": {
+    "errorType": "status_code",
+    "url": "https://sourceforge.net/u/{}",
+    "urlMain": "https://sourceforge.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SoylentNews": {
+    "errorMsg": "The user you requested does not exist, no matter how much you wish this might be the case.",
+    "errorType": "message",
+    "url": "https://soylentnews.org/~{}",
+    "urlMain": "https://soylentnews.org",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SparkPeople": {
+    "errorMsg": "We couldn't find that user",
+    "errorType": "message",
+    "url": "https://www.sparkpeople.com/mypage.asp?id={}",
+    "urlMain": "https://www.sparkpeople.com",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Speedrun.com": {
+    "errorMsg": "not found.",
+    "errorType": "message",
+    "url": "https://speedrun.com/user/{}",
+    "urlMain": "https://speedrun.com/",
+    "username_claimed": "3Tau",
+    "username_unclaimed": "noonewould"
+  },
+  "Splits.io": {
+    "errorType": "status_code",
+    "url": "https://splits.io/users/{}",
+    "urlMain": "https://splits.io",
+    "username_claimed": "cambosteve",
+    "username_unclaimed": "noonewould"
+  },
+  "Sporcle": {
+    "errorType": "status_code",
+    "url": "https://www.sporcle.com/user/{}/people",
+    "urlMain": "https://www.sporcle.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SportsRU": {
+    "errorType": "status_code",
+    "url": "https://www.sports.ru/profile/{}/",
+    "urlMain": "https://www.sports.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Spotify": {
+    "errorType": "status_code",
+    "url": "https://open.spotify.com/user/{}",
+    "urlMain": "https://open.spotify.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Star Citizen": {
+    "errorType": "status_code",
+    "url": "https://robertsspaceindustries.com/citizens/{}",
+    "urlMain": "https://robertsspaceindustries.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Steam": {
+    "errorMsg": "The specified profile could not be found",
+    "errorType": "message",
+    "url": "https://steamcommunity.com/id/{}",
+    "urlMain": "https://steamcommunity.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SteamGroup": {
+    "errorMsg": "No group could be retrieved for the given URL",
+    "errorType": "message",
+    "url": "https://steamcommunity.com/groups/{}",
+    "urlMain": "https://steamcommunity.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Steamid": {
+    "errorMsg": "<div class=\"alert alert-warning\">Profile not found</div>",
+    "errorType": "message",
+    "url": "https://steamid.uk/profile/{}",
+    "urlMain": "https://steamid.uk/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Strava": {
+    "errorMsg": "Strava | Run and Cycling Tracking on the Social Network for Athletes",
+    "errorType": "message",
+    "url": "https://www.strava.com/athletes/{}",
+    "urlMain": "https://www.strava.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "SublimeForum": {
+    "errorType": "status_code",
+    "url": "https://forum.sublimetext.com/u/{}",
+    "urlMain": "https://forum.sublimetext.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Telegram": {
+    "errorMsg": "<meta property=\"og:description\" content=\"\">",
+    "errorType": "message",
+    "regexCheck": "^[a-zA-Z0-9_]{5,32}$",
+    "url": "https://t.me/{}",
+    "urlMain": "https://t.me/",
+    "username_claimed": "roopeshvs",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Tellonym.me": {
+    "errorType": "status_code",
+    "url": "https://tellonym.me/{}",
+    "urlMain": "https://tellonym.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "TikTok": {
+    "errorType": "status_code",
+    "url": "https://tiktok.com/@{}",
+    "urlMain": "https://tiktok.com/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Tinder": {
+    "errorMsg": [
+      "<title data-react-helmet=\"true\">Tinder | Dating, Make Friends &amp; Meet New People</title>",
+      "<title data-react-helmet=\"true\">Tinder | Match. Chat. Date.</title>"
+    ],
+    "errorType": "message",
+    "url": "https://www.gotinder.com/@{}",
+    "urlMain": "https://tinder.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "TrackmaniaLadder": {
+    "errorMsg": "player unknown or invalid",
+    "errorType": "message",
+    "url": "http://en.tm-ladder.com/{}_rech.php",
+    "urlMain": "http://en.tm-ladder.com/index.php",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "TradingView": {
+    "errorType": "status_code",
+    "url": "https://www.tradingview.com/u/{}/",
+    "urlMain": "https://www.tradingview.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Trakt": {
+    "errorType": "status_code",
+    "regexCheck": "^[^.]*$",
+    "url": "https://www.trakt.tv/users/{}",
+    "urlMain": "https://www.trakt.tv/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "TrashboxRU": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+    "errorType": "message",
+    "regexCheck": "^[A-Za-z0-9_-]{3,16}$",
+    "url": "https://trashbox.ru/users/{}",
+    "urlMain": "https://trashbox.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "never-never-ever"
+  },
+  "Travellerspoint": {
+    "errorMsg": "Wooops. Sorry!",
+    "errorType": "message",
+    "url": "https://www.travellerspoint.com/users/{}",
+    "urlMain": "https://www.travellerspoint.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Trello": {
+    "errorMsg": "model not found",
+    "errorType": "message",
+    "url": "https://trello.com/{}",
+    "urlMain": "https://trello.com/",
+    "urlProbe": "https://trello.com/1/Members/{}",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "TripAdvisor": {
+    "errorMsg": "This page is on vacation\u2026",
+    "errorType": "message",
+    "url": "https://tripadvisor.com/members/{}",
+    "urlMain": "https://tripadvisor.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "TryHackMe": {
+    "errorType": "status_code",
+    "url": "https://tryhackme.com/p/{}",
+    "urlMain": "https://tryhackme.com/",
+    "username_claimed": "ashu",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Twitch": {
+    "errorType": "status_code",
+    "url": "https://www.twitch.tv/{}",
+    "urlMain": "https://www.twitch.tv/",
+    "urlProbe": "https://m.twitch.tv/{}",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Twitter": {
+    "errorType": "status_code",
+    "headers": {
+      "User-Agent": ""
+    },
+    "url": "https://mobile.twitter.com/{}",
+    "urlMain": "https://mobile.twitter.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Typeracer": {
+    "errorMsg": "Profile Not Found",
+    "errorType": "message",
+    "url": "https://data.typeracer.com/pit/profile?user={}",
+    "urlMain": "https://typeracer.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Ultimate-Guitar": {
+    "errorType": "status_code",
+    "url": "https://ultimate-guitar.com/u/{}",
+    "urlMain": "https://ultimate-guitar.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Unsplash": {
+    "errorType": "status_code",
+    "url": "https://unsplash.com/@{}",
+    "urlMain": "https://unsplash.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "VK": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.quora.com/profile/{}",
+    "url": "https://vk.com/{}",
+    "urlMain": "https://vk.com/",
+    "username_claimed": "smith",
+    "username_unclaimed": "blah62831"
+  },
+  "VSCO": {
+    "errorType": "status_code",
+    "url": "https://vsco.co/{}",
+    "urlMain": "https://vsco.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Velomania": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.",
+    "errorType": "message",
+    "url": "https://forum.velomania.ru/member.php?username={}",
+    "urlMain": "https://forum.velomania.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Venmo": {
+    "errorType": "status_code",
+    "url": "https://venmo.com/{}",
+    "urlMain": "https://venmo.com/",
+    "username_claimed": "jenny",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Vero": {
+    "errorType": "status_code",
+    "request_head_only": false,
+    "url": "https://vero.co/{}",
+    "urlMain": "https://vero.co/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "Vimeo": {
+    "errorType": "status_code",
+    "url": "https://vimeo.com/{}",
+    "urlMain": "https://vimeo.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Virgool": {
+    "errorMsg": "\u06f4\u06f0\u06f4",
+    "errorType": "message",
+    "url": "https://virgool.io/@{}",
+    "urlMain": "https://virgool.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "VirusTotal": {
+    "errorType": "status_code",
+    "request_head_only": false,
+    "url": "https://www.virustotal.com/ui/users/{}/trusted_users",
+    "urlMain": "https://www.virustotal.com/",
+    "urlProbe": "https://www.virustotal.com/ui/users/{}/avatar",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Warrior Forum": {
+    "errorType": "status_code",
+    "url": "https://www.warriorforum.com/members/{}.html",
+    "urlMain": "https://www.warriorforum.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis77777"
+  },
+  "Wattpad": {
+    "errorType": "status_code",
+    "url": "https://www.wattpad.com/user/{}",
+    "urlMain": "https://www.wattpad.com/",
+    "urlProbe": "https://www.wattpad.com/api/v3/users/{}/",
+    "username_claimed": "Dogstho7951",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "We Heart It": {
+    "errorMsg": "Oops! You've landed on a moving target!",
+    "errorType": "message",
+    "url": "https://weheartit.com/{}",
+    "urlMain": "https://weheartit.com/",
+    "username_claimed": "ventivogue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "WebNode": {
+    "errorType": "status_code",
+    "url": "https://{}.webnode.cz/",
+    "urlMain": "https://www.webnode.cz/",
+    "username_claimed": "radkabalcarova",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Whonix Forum": {
+    "errorType": "status_code",
+    "url": "https://forums.whonix.org/u/{}",
+    "urlMain": "https://forums.whonix.org/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Wikidot": {
+    "errorMsg": "User does not exist.",
+    "errorType": "message",
+    "url": "http://www.wikidot.com/user:info/{}",
+    "urlMain": "http://www.wikidot.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Wikipedia": {
+    "errorMsg": "<b>Wikipedia does not have a <a href=\"/wiki/Wikipedia:User_pages\" title=\"Wikipedia:User pages\">user page</a> with this exact name.</b>",
+    "errorType": "message",
+    "url": "https://www.wikipedia.org/wiki/User:{}",
+    "urlMain": "https://www.wikipedia.org/",
+    "username_claimed": "Hoadlck",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Windy": {
+    "errorType": "status_code",
+    "url": "https://community.windy.com/user/{}",
+    "urlMain": "https://windy.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Wix": {
+    "errorType": "status_code",
+    "url": "https://{}.wix.com",
+    "urlMain": "https://wix.com/",
+    "username_claimed": "support",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "WordPress": {
+    "errorType": "response_url",
+    "errorUrl": "wordpress.com/typo/?subdomain=",
+    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
+    "url": "https://{}.wordpress.com/",
+    "urlMain": "https://wordpress.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "WordPressOrg": {
+    "errorType": "response_url",
+    "errorUrl": "https://wordpress.org",
+    "url": "https://profiles.wordpress.org/{}/",
+    "urlMain": "https://wordpress.org/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Xbox Gamertag": {
+    "errorType": "status_code",
+    "url": "https://xboxgamertag.com/search/{}",
+    "urlMain": "https://xboxgamertag.com/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "YouNow": {
+    "errorMsg": "No users found",
+    "errorType": "message",
+    "url": "https://www.younow.com/{}/",
+    "urlMain": "https://www.younow.com/",
+    "urlProbe": "https://api.younow.com/php/api/broadcast/info/user={}/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "YouPic": {
+    "errorType": "status_code",
+    "url": "https://youpic.com/photographer/{}/",
+    "urlMain": "https://youpic.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "YouTube": {
+    "errorMsg": "Not Found",
+    "errorType": "message",
+    "url": "https://www.youtube.com/{}",
+    "urlMain": "https://www.youtube.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "Zhihu": {
+    "errorType": "response_url",
+    "errorUrl": "https://www.zhihu.com/people/{}",
+    "url": "https://www.zhihu.com/people/{}",
+    "urlMain": "https://www.zhihu.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "akniga": {
+    "errorType": "status_code",
+    "url": "https://akniga.org/profile/{}",
+    "urlMain": "https://akniga.org/profile/blue/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "allmylinks": {
+    "errorMsg": "Page not found",
+    "errorType": "message",
+    "url": "https://allmylinks.com/{}",
+    "urlMain": "https://allmylinks.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "aminoapp": {
+    "errorType": "status_code",
+    "url": "https://aminoapps.com/u/{}",
+    "urlMain": "https://aminoapps.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis77777"
+  },
+  "authorSTREAM": {
+    "errorType": "status_code",
+    "url": "http://www.authorstream.com/{}/",
+    "urlMain": "http://www.authorstream.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "babyRU": {
+    "errorMsg": "\u0423\u043f\u0441, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0438\u0441\u043a\u0430\u043b\u0438, \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442",
+    "errorType": "message",
+    "url": "https://www.baby.ru/u/{}/",
+    "urlMain": "https://www.baby.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "babyblogRU": {
+    "errorMsg": "<title>BabyBlog \u2014 \u043a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439</title>",
+    "errorType": "message",
+    "url": "https://www.babyblog.ru/user/info/{}",
+    "urlMain": "https://www.babyblog.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "chaos.social": {
+    "errorType": "status_code",
+    "url": "https://chaos.social/@{}",
+    "urlMain": "https://chaos.social/",
+    "username_claimed": "rixx",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "couchsurfing": {
+    "errorType": "status_code",
+    "url": "https://www.couchsurfing.com/people/{}",
+    "urlMain": "https://www.couchsurfing.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "d3RU": {
+    "errorType": "status_code",
+    "url": "https://d3.ru/user/{}/posts",
+    "urlMain": "https://d3.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "dailykos": {
+    "errorType": "status_code",
+    "url": "https://www.dailykos.com/user/{}",
+    "urlMain": "https://www.dailykos.com",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "datingRU": {
+    "errorType": "status_code",
+    "url": "http://dating.ru/{}",
+    "urlMain": "http://dating.ru",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "devRant": {
+    "errorType": "response_url",
+    "errorUrl": "https://devrant.com/",
+    "url": "https://devrant.com/users/{}",
+    "urlMain": "https://devrant.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "drive2": {
+    "errorType": "status_code",
+    "url": "https://www.drive2.ru/users/{}",
+    "urlMain": "https://www.drive2.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "eGPU": {
+    "errorType": "status_code",
+    "url": "https://egpu.io/forums/profile/{}/",
+    "urlMain": "https://egpu.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "eintracht": {
+    "errorType": "status_code",
+    "url": "https://community.eintracht.de/fans/{}",
+    "urlMain": "https://eintracht.de",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "fixya": {
+    "errorType": "status_code",
+    "url": "https://www.fixya.com/users/{}",
+    "urlMain": "https://www.fixya.com",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "fl": {
+    "errorType": "status_code",
+    "url": "https://www.fl.ru/users/{}",
+    "urlMain": "https://www.fl.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "forum_guns": {
+    "errorMsg": "action=https://forum.guns.ru/forummisc/blog/search",
+    "errorType": "message",
+    "url": "https://forum.guns.ru/forummisc/blog/{}",
+    "urlMain": "https://forum.guns.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "forumhouseRU": {
+    "errorMsg": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f.",
+    "errorType": "message",
+    "url": "https://www.forumhouse.ru/members/?username={}",
+    "urlMain": "https://www.forumhouse.ru/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "geocaching": {
+    "errorType": "status_code",
+    "url": "https://www.geocaching.com/p/default.aspx?u={}",
+    "urlMain": "https://www.geocaching.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "gfycat": {
+    "errorType": "status_code",
+    "url": "https://gfycat.com/@{}",
+    "urlMain": "https://gfycat.com/",
+    "username_claimed": "Test",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "habr": {
+    "errorType": "status_code",
+    "url": "https://habr.com/ru/users/{}",
+    "urlMain": "https://habr.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "hackster": {
+    "errorType": "status_code",
+    "url": "https://www.hackster.io/{}",
+    "urlMain": "https://www.hackster.io",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "hunting": {
+    "errorMsg": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f.",
+    "errorType": "message",
+    "url": "https://www.hunting.ru/forum/members/?username={}",
+    "urlMain": "https://www.hunting.ru/forum/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "iMGSRC.RU": {
+    "errorType": "response_url",
+    "errorUrl": "https://imgsrc.ru/",
+    "url": "https://imgsrc.ru/main/user.php?user={}",
+    "urlMain": "https://imgsrc.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "igromania": {
+    "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.",
+    "errorType": "message",
+    "url": "http://forum.igromania.ru/member.php?username={}",
+    "urlMain": "http://forum.igromania.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "interpals": {
+    "errorMsg": "The requested user does not exist or is inactive",
+    "errorType": "message",
+    "url": "https://www.interpals.net/{}",
+    "urlMain": "https://www.interpals.net/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noneownsthisusername"
+  },
+  "irecommend": {
+    "errorType": "status_code",
+    "url": "https://irecommend.ru/users/{}",
+    "urlMain": "https://irecommend.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "jbzd.com.pl": {
+    "errorType": "status_code",
+    "url": "https://jbzd.com.pl/uzytkownik/{}",
+    "urlMain": "https://jbzd.com.pl/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "jeuxvideo": {
+    "errorMsg": "Vous \u00eates",
+    "errorType": "message",
+    "url": "http://www.jeuxvideo.com/profil/{}?mode=infos",
+    "urlMain": "http://www.jeuxvideo.com",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "kofi": {
+    "errorType": "response_url",
+    "errorUrl": "https://ko-fi.com/art?=redirect",
+    "url": "https://ko-fi.com/{}",
+    "urlMain": "https://ko-fi.com",
+    "username_claimed": "yeahkenny",
+    "username_unclaimed": "noonewouldeverusethis77777"
+  },
+  "kwork": {
+    "errorType": "status_code",
+    "url": "https://kwork.ru/user/{}",
+    "urlMain": "https://www.kwork.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "labpentestit": {
+    "errorType": "response_url",
+    "errorUrl": "https://lab.pentestit.ru/{}",
+    "url": "https://lab.pentestit.ru/profile/{}",
+    "urlMain": "https://lab.pentestit.ru/",
+    "username_claimed": "CSV",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "last.fm": {
+    "errorType": "status_code",
+    "url": "https://last.fm/user/{}",
+    "urlMain": "https://last.fm/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "leasehackr": {
+    "errorType": "status_code",
+    "url": "https://forum.leasehackr.com/u/{}/summary/",
+    "urlMain": "https://forum.leasehackr.com/",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis"
+  },
+  "livelib": {
+    "errorType": "status_code",
+    "url": "https://www.livelib.ru/reader/{}",
+    "urlMain": "https://www.livelib.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "mastodon.cloud": {
+    "errorType": "status_code",
+    "url": "https://mastodon.cloud/@{}",
+    "urlMain": "https://mastodon.cloud/",
+    "username_claimed": "TheAdmin",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "mastodon.social": {
+    "errorType": "status_code",
+    "url": "https://mastodon.social/@{}",
+    "urlMain": "https://chaos.social/",
+    "username_claimed": "Gargron",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "mastodon.technology": {
+    "errorType": "status_code",
+    "url": "https://mastodon.technology/@{}",
+    "urlMain": "https://mastodon.xyz/",
+    "username_claimed": "ashfurrow",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "mastodon.xyz": {
+    "errorType": "status_code",
+    "url": "https://mastodon.xyz/@{}",
+    "urlMain": "https://mastodon.xyz/",
+    "username_claimed": "TheKinrar",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "mercadolivre": {
+    "errorType": "status_code",
+    "url": "https://www.mercadolivre.com.br/perfil/{}",
+    "urlMain": "https://www.mercadolivre.com.br",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis77777"
+  },
+  "metacritic": {
+    "errorMsg": "User not found",
+    "errorType": "message",
+    "regexCheck": "^(?![-_].)[A-Za-z0-9-_]{3,15}$",
+    "url": "https://www.metacritic.com/user/{}",
+    "urlMain": "https://www.metacritic.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewould"
+  },
+  "moikrug": {
+    "errorType": "status_code",
+    "url": "https://moikrug.ru/{}",
+    "urlMain": "https://moikrug.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "mstdn.io": {
+    "errorType": "status_code",
+    "url": "https://mstdn.io/@{}",
+    "urlMain": "https://mstdn.io/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "nairaland.com": {
+    "errorType": "status_code",
+    "url": "https://www.nairaland.com/{}",
+    "urlMain": "https://www.nairaland.com/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "nnRU": {
+    "errorType": "status_code",
+    "url": "https://{}.www.nn.ru/",
+    "urlMain": "https://https://www.nn.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "note": {
+    "errorType": "status_code",
+    "url": "https://note.com/{}",
+    "urlMain": "https://note.com/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "npm": {
+    "errorType": "status_code",
+    "url": "https://www.npmjs.com/~{}",
+    "urlMain": "https://www.npmjs.com/",
+    "username_claimed": "kennethsweezy",
+    "username_unclaimed": "noonewould"
+  },
+  "opennet": {
+    "errorMsg": "\u0418\u043c\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e",
+    "errorType": "message",
+    "regexCheck": "^[^-]*$",
+    "url": "https://www.opennet.ru/~{}",
+    "urlMain": "https://www.opennet.ru/",
+    "username_claimed": "anonismus",
+    "username_unclaimed": "noneownsthisusername"
+  },
+  "osu!": {
+    "errorType": "status_code",
+    "url": "https://osu.ppy.sh/users/{}",
+    "urlMain": "https://osu.ppy.sh/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "phpRU": {
+    "errorMsg": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f.",
+    "errorType": "message",
+    "url": "https://php.ru/forum/members/?username={}",
+    "urlMain": "https://php.ru/forum/",
+    "username_claimed": "apple",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "pikabu": {
+    "errorType": "status_code",
+    "url": "https://pikabu.ru/@{}",
+    "urlMain": "https://pikabu.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "pr0gramm": {
+    "errorType": "status_code",
+    "url": "https://pr0gramm.com/user/{}",
+    "urlMain": "https://pr0gramm.com/",
+    "urlProbe": "https://pr0gramm.com/api/profile/info?name={}",
+    "username_claimed": "cha0s",
+    "username_unclaimed": "noonewouldeverusethis123123123123123123"
+  },
+  "prog.hu": {
+    "errorType": "response_url",
+    "errorUrl": "https://prog.hu/azonosito/info/{}",
+    "url": "https://prog.hu/azonosito/info/{}",
+    "urlMain": "https://prog.hu/",
+    "username_claimed": "Sting",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "radio_echo_msk": {
+    "errorType": "status_code",
+    "url": "https://echo.msk.ru/users/{}",
+    "urlMain": "https://echo.msk.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "satsisRU": {
+    "errorType": "status_code",
+    "url": "https://satsis.info/user/{}",
+    "urlMain": "https://satsis.info/",
+    "username_claimed": "red",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "social.tchncs.de": {
+    "errorType": "status_code",
+    "url": "https://social.tchncs.de/@{}",
+    "urlMain": "https://social.tchncs.de/",
+    "username_claimed": "Milan",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "spletnik": {
+    "errorType": "status_code",
+    "url": "https://spletnik.ru/user/{}",
+    "urlMain": "https://spletnik.ru/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "svidbook": {
+    "errorType": "status_code",
+    "url": "https://www.svidbook.ru/user/{}",
+    "urlMain": "https://www.svidbook.ru/",
+    "username_claimed": "green",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "toster": {
+    "errorType": "status_code",
+    "url": "https://www.toster.ru/user/{}/answers",
+    "urlMain": "https://www.toster.ru/",
+    "username_claimed": "adam",
+    "username_unclaimed": "noonewouldeverusethis7"
+  },
+  "uid": {
+    "errorType": "status_code",
+    "url": "http://uid.me/{}",
+    "urlMain": "https://uid.me/",
+    "username_claimed": "blue",
+    "username_unclaimed": "noonewouldeverusethis7"
+  }
 }
\ No newline at end of file
diff --git a/sherlock/result.py b/sherlock/result.py
new file mode 100644
index 0000000..6e6ddc1
--- /dev/null
+++ b/sherlock/result.py
@@ -0,0 +1,88 @@
+"""Sherlock Result Module
+
+This module defines various objects for recording the results of queries.
+"""
+from enum import Enum
+
+
+class QueryStatus(Enum):
+    """Query Status Enumeration.
+
+    Describes status of query about a given username.
+    """
+    CLAIMED   = "Claimed"   # Username Detected
+    AVAILABLE = "Available" # Username Not Detected
+    UNKNOWN   = "Unknown"   # Error Occurred While Trying To Detect Username
+    ILLEGAL   = "Illegal"   # Username Not Allowable For This Site
+
+    def __str__(self):
+        """Convert Object To String.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        Nicely formatted string to get information about this object.
+        """
+        return self.value
+
+class QueryResult():
+    """Query Result Object.
+
+    Describes result of query about a given username.
+    """
+    def __init__(self, username, site_name, site_url_user, status,
+                 query_time=None, context=None):
+        """Create Query Result Object.
+
+        Contains information about a specific method of detecting usernames on
+        a given type of web sites.
+
+        Keyword Arguments:
+        self                   -- This object.
+        username               -- String indicating username that query result
+                                  was about.
+        site_name              -- String which identifies site.
+        site_url_user          -- String containing URL for username on site.
+                                  NOTE:  The site may or may not exist:  this
+                                         just indicates what the name would
+                                         be, if it existed.
+        status                 -- Enumeration of type QueryStatus() indicating
+                                  the status of the query.
+        query_time             -- Time (in seconds) required to perform query.
+                                  Default of None.
+        context                -- String indicating any additional context
+                                  about the query.  For example, if there was
+                                  an error, this might indicate the type of
+                                  error that occurred.
+                                  Default of None.
+
+        Return Value:
+        Nothing.
+        """
+
+        self.username      = username
+        self.site_name     = site_name
+        self.site_url_user = site_url_user
+        self.status        = status
+        self.query_time    = query_time
+        self.context       = context
+
+        return
+
+    def __str__(self):
+        """Convert Object To String.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        Nicely formatted string to get information about this object.
+        """
+        status = str(self.status)
+        if self.context is not None:
+            # There is extra context information available about the results.
+            # Append it to the normal response text.
+            status += f" ({self.context})"
+
+        return status
diff --git a/sherlock/sherlock.py b/sherlock/sherlock.py
new file mode 100644
index 0000000..cd77932
--- /dev/null
+++ b/sherlock/sherlock.py
@@ -0,0 +1,668 @@
+#! /usr/bin/env python3
+
+"""
+Sherlock: Find Usernames Across Social Networks Module
+
+This module contains the main logic to search for usernames at social
+networks.
+"""
+
+import csv
+import os
+import platform
+import re
+import sys
+from argparse import ArgumentParser, RawDescriptionHelpFormatter
+from time import monotonic
+
+import requests
+
+from requests_futures.sessions import FuturesSession
+from torrequest import TorRequest
+from result import QueryStatus
+from result import QueryResult
+from notify import QueryNotifyPrint
+from sites  import SitesInformation
+
+module_name = "Sherlock: Find Usernames Across Social Networks"
+__version__ = "0.13.0"
+
+
+
+
+class SherlockFuturesSession(FuturesSession):
+    def request(self, method, url, hooks={}, *args, **kwargs):
+        """Request URL.
+
+        This extends the FuturesSession request method to calculate a response
+        time metric to each request.
+
+        It is taken (almost) directly from the following StackOverflow answer:
+        https://github.com/ross/requests-futures#working-in-the-background
+
+        Keyword Arguments:
+        self                   -- This object.
+        method                 -- String containing method desired for request.
+        url                    -- String containing URL for request.
+        hooks                  -- Dictionary containing hooks to execute after
+                                  request finishes.
+        args                   -- Arguments.
+        kwargs                 -- Keyword arguments.
+
+        Return Value:
+        Request object.
+        """
+        # Record the start time for the request.
+        start = monotonic()
+
+        def response_time(resp, *args, **kwargs):
+            """Response Time Hook.
+
+            Keyword Arguments:
+            resp                   -- Response object.
+            args                   -- Arguments.
+            kwargs                 -- Keyword arguments.
+
+            Return Value:
+            N/A
+            """
+            resp.elapsed = monotonic() - start
+
+            return
+
+        # Install hook to execute when response completes.
+        # Make sure that the time measurement hook is first, so we will not
+        # track any later hook's execution time.
+        try:
+            if isinstance(hooks['response'], list):
+                hooks['response'].insert(0, response_time)
+            elif isinstance(hooks['response'], tuple):
+                # Convert tuple to list and insert time measurement hook first.
+                hooks['response'] = list(hooks['response'])
+                hooks['response'].insert(0, response_time)
+            else:
+                # Must have previously contained a single hook function,
+                # so convert to list.
+                hooks['response'] = [response_time, hooks['response']]
+        except KeyError:
+            # No response hook was already defined, so install it ourselves.
+            hooks['response'] = [response_time]
+
+        return super(SherlockFuturesSession, self).request(method,
+                                                           url,
+                                                           hooks=hooks,
+                                                           *args, **kwargs)
+
+
+def get_response(request_future, error_type, social_network):
+
+    # Default for Response object if some failure occurs.
+    response = None
+
+    error_context = "General Unknown Error"
+    expection_text = None
+    try:
+        response = request_future.result()
+        if response.status_code:
+            # Status code exists in response object
+            error_context = None
+    except requests.exceptions.HTTPError as errh:
+        error_context = "HTTP Error"
+        expection_text = str(errh)
+    except requests.exceptions.ProxyError as errp:
+        error_context = "Proxy Error"
+        expection_text = str(errp)
+    except requests.exceptions.ConnectionError as errc:
+        error_context = "Error Connecting"
+        expection_text = str(errc)
+    except requests.exceptions.Timeout as errt:
+        error_context = "Timeout Error"
+        expection_text = str(errt)
+    except requests.exceptions.RequestException as err:
+        error_context = "Unknown Error"
+        expection_text = str(err)
+
+    return response, error_context, expection_text
+
+
+def sherlock(username, site_data, query_notify,
+             tor=False, unique_tor=False,
+             proxy=None, timeout=None):
+    """Run Sherlock Analysis.
+
+    Checks for existence of username on various social media sites.
+
+    Keyword Arguments:
+    username               -- String indicating username that report
+                              should be created against.
+    site_data              -- Dictionary containing all of the site data.
+    query_notify           -- Object with base type of QueryNotify().
+                              This will be used to notify the caller about
+                              query results.
+    tor                    -- Boolean indicating whether to use a tor circuit for the requests.
+    unique_tor             -- Boolean indicating whether to use a new tor circuit for each request.
+    proxy                  -- String indicating the proxy URL
+    timeout                -- Time in seconds to wait before timing out request.
+                              Default is no timeout.
+
+    Return Value:
+    Dictionary containing results from report. Key of dictionary is the name
+    of the social network site, and the value is another dictionary with
+    the following keys:
+        url_main:      URL of main site.
+        url_user:      URL of user on site (if account exists).
+        status:        QueryResult() object indicating results of test for
+                       account existence.
+        http_status:   HTTP status code of query which checked for existence on
+                       site.
+        response_text: Text that came back from request.  May be None if
+                       there was an HTTP error when checking for existence.
+    """
+
+    # Notify caller that we are starting the query.
+    query_notify.start(username)
+
+    # Create session based on request methodology
+    if tor or unique_tor:
+        # Requests using Tor obfuscation
+        underlying_request = TorRequest()
+        underlying_session = underlying_request.session
+    else:
+        # Normal requests
+        underlying_session = requests.session()
+        underlying_request = requests.Request()
+
+    # Limit number of workers to 20.
+    # This is probably vastly overkill.
+    if len(site_data) >= 20:
+        max_workers=20
+    else:
+        max_workers=len(site_data)
+
+    # Create multi-threaded session for all requests.
+    session = SherlockFuturesSession(max_workers=max_workers,
+                                     session=underlying_session)
+
+
+    # Results from analysis of all sites
+    results_total = {}
+
+    # First create futures for all requests. This allows for the requests to run in parallel
+    for social_network, net_info in site_data.items():
+
+        # Results from analysis of this specific site
+        results_site = {}
+
+        # Record URL of main site
+        results_site['url_main'] = net_info.get("urlMain")
+
+        # A user agent is needed because some sites don't return the correct
+        # information since they think that we are bots (Which we actually are...)
+        headers = {
+            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0',
+        }
+
+        if "headers" in net_info:
+            # Override/append any extra headers required by a given site.
+            headers.update(net_info["headers"])
+
+        # URL of user on site (if it exists)
+        url = net_info["url"].format(username)
+
+        # Don't make request if username is invalid for the site
+        regex_check = net_info.get("regexCheck")
+        if regex_check and re.search(regex_check, username) is None:
+            # No need to do the check at the site: this user name is not allowed.
+            results_site['status'] = QueryResult(username,
+                                                 social_network,
+                                                 url,
+                                                 QueryStatus.ILLEGAL)
+            results_site["url_user"] = ""
+            results_site['http_status'] = ""
+            results_site['response_text'] = ""
+            query_notify.update(results_site['status'])
+        else:
+            # URL of user on site (if it exists)
+            results_site["url_user"] = url
+            url_probe = net_info.get("urlProbe")
+            if url_probe is None:
+                # Probe URL is normal one seen by people out on the web.
+                url_probe = url
+            else:
+                # There is a special URL for probing existence separate
+                # from where the user profile normally can be found.
+                url_probe = url_probe.format(username)
+
+            if (net_info["errorType"] == 'status_code' and
+                net_info.get("request_head_only", True) == True):
+                # In most cases when we are detecting by status code,
+                # it is not necessary to get the entire body:  we can
+                # detect fine with just the HEAD response.
+                request_method = session.head
+            else:
+                # Either this detect method needs the content associated
+                # with the GET response, or this specific website will
+                # not respond properly unless we request the whole page.
+                request_method = session.get
+
+            if net_info["errorType"] == "response_url":
+                # Site forwards request to a different URL if username not
+                # found.  Disallow the redirect so we can capture the
+                # http status from the original URL request.
+                allow_redirects = False
+            else:
+                # Allow whatever redirect that the site wants to do.
+                # The final result of the request will be what is available.
+                allow_redirects = True
+
+            # This future starts running the request in a new thread, doesn't block the main thread
+            if proxy is not None:
+                proxies = {"http": proxy, "https": proxy}
+                future = request_method(url=url_probe, headers=headers,
+                                        proxies=proxies,
+                                        allow_redirects=allow_redirects,
+                                        timeout=timeout
+                                        )
+            else:
+                future = request_method(url=url_probe, headers=headers,
+                                        allow_redirects=allow_redirects,
+                                        timeout=timeout
+                                        )
+
+            # Store future in data for access later
+            net_info["request_future"] = future
+
+            # Reset identify for tor (if needed)
+            if unique_tor:
+                underlying_request.reset_identity()
+
+        # Add this site's results into final dictionary with all of the other results.
+        results_total[social_network] = results_site
+
+    # Open the file containing account links
+    # Core logic: If tor requests, make them here. If multi-threaded requests, wait for responses
+    for social_network, net_info in site_data.items():
+
+        # Retrieve results again
+        results_site = results_total.get(social_network)
+
+        # Retrieve other site information again
+        url = results_site.get("url_user")
+        status = results_site.get("status")
+        if status is not None:
+            # We have already determined the user doesn't exist here
+            continue
+
+        # Get the expected error type
+        error_type = net_info["errorType"]
+
+        # Retrieve future and ensure it has finished
+        future = net_info["request_future"]
+        r, error_text, expection_text = get_response(request_future=future,
+                                                     error_type=error_type,
+                                                     social_network=social_network)
+
+        # Get response time for response of our request.
+        try:
+            response_time = r.elapsed
+        except AttributeError:
+            response_time = None
+
+        # Attempt to get request information
+        try:
+            http_status = r.status_code
+        except:
+            http_status = "?"
+        try:
+            response_text = r.text.encode(r.encoding)
+        except:
+            response_text = ""
+
+        if error_text is not None:
+            result = QueryResult(username,
+                                 social_network,
+                                 url,
+                                 QueryStatus.UNKNOWN,
+                                 query_time=response_time,
+                                 context=error_text)
+        elif error_type == "message":
+            # error_flag True denotes no error found in the HTML
+            # error_flag False denotes error found in the HTML
+            error_flag = True
+            errors=net_info.get("errorMsg")
+            # errors will hold the error message
+            # it can be string or list
+            # by insinstance method we can detect that
+            # and handle the case for strings as normal procedure
+            # and if its list we can iterate the errors
+            if isinstance(errors,str):
+                # Checks if the error message is in the HTML
+                # if error is present we will set flag to False
+                if errors in r.text:
+                    error_flag = False
+            else:
+                # If it's list, it will iterate all the error message
+                for error in errors:
+                    if error in r.text:
+                        error_flag = False
+                        break
+            if error_flag:
+                result = QueryResult(username,
+                                     social_network,
+                                     url,
+                                     QueryStatus.CLAIMED,
+                                     query_time=response_time)
+            else:
+                result = QueryResult(username,
+                                     social_network,
+                                     url,
+                                     QueryStatus.AVAILABLE,
+                                     query_time=response_time)
+        elif error_type == "status_code":
+            # Checks if the status code of the response is 2XX
+            if not r.status_code >= 300 or r.status_code < 200:
+                result = QueryResult(username,
+                                     social_network,
+                                     url,
+                                     QueryStatus.CLAIMED,
+                                     query_time=response_time)
+            else:
+                result = QueryResult(username,
+                                     social_network,
+                                     url,
+                                     QueryStatus.AVAILABLE,
+                                     query_time=response_time)
+        elif error_type == "response_url":
+            # For this detection method, we have turned off the redirect.
+            # So, there is no need to check the response URL: it will always
+            # match the request.  Instead, we will ensure that the response
+            # code indicates that the request was successful (i.e. no 404, or
+            # forward to some odd redirect).
+            if 200 <= r.status_code < 300:
+                result = QueryResult(username,
+                                     social_network,
+                                     url,
+                                     QueryStatus.CLAIMED,
+                                     query_time=response_time)
+            else:
+                result = QueryResult(username,
+                                     social_network,
+                                     url,
+                                     QueryStatus.AVAILABLE,
+                                     query_time=response_time)
+        else:
+            # It should be impossible to ever get here...
+            raise ValueError(f"Unknown Error Type '{error_type}' for "
+                             f"site '{social_network}'")
+
+
+        # Notify caller about results of query.
+        query_notify.update(result)
+
+        # Save status of request
+        results_site['status'] = result
+
+        # Save results from request
+        results_site['http_status'] = http_status
+        results_site['response_text'] = response_text
+
+        # Add this site's results into final dictionary with all of the other results.
+        results_total[social_network] = results_site
+
+    # Notify caller that all queries are finished.
+    query_notify.finish()
+
+    return results_total
+
+
+def timeout_check(value):
+    """Check Timeout Argument.
+
+    Checks timeout for validity.
+
+    Keyword Arguments:
+    value                  -- Time in seconds to wait before timing out request.
+
+    Return Value:
+    Floating point number representing the time (in seconds) that should be
+    used for the timeout.
+
+    NOTE:  Will raise an exception if the timeout in invalid.
+    """
+    from argparse import ArgumentTypeError
+
+    try:
+        timeout = float(value)
+    except:
+        raise ArgumentTypeError(f"Timeout '{value}' must be a number.")
+    if timeout <= 0:
+        raise ArgumentTypeError(f"Timeout '{value}' must be greater than 0.0s.")
+    return timeout
+
+
+def main():
+
+    version_string = f"%(prog)s {__version__}\n" +  \
+                     f"{requests.__description__}:  {requests.__version__}\n" + \
+                     f"Python:  {platform.python_version()}"
+
+    parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter,
+                            description=f"{module_name} (Version {__version__})"
+                            )
+    parser.add_argument("--version",
+                        action="version",  version=version_string,
+                        help="Display version information and dependencies."
+                        )
+    parser.add_argument("--verbose", "-v", "-d", "--debug",
+                        action="store_true",  dest="verbose", default=False,
+                        help="Display extra debugging information and metrics."
+                        )
+    parser.add_argument("--folderoutput", "-fo", dest="folderoutput",
+                        help="If using multiple usernames, the output of the results will be saved to this folder."
+                        )
+    parser.add_argument("--output", "-o", dest="output",
+                        help="If using single username, the output of the result will be saved to this file."
+                        )
+    parser.add_argument("--tor", "-t",
+                        action="store_true", dest="tor", default=False,
+                        help="Make requests over Tor; increases runtime; requires Tor to be installed and in system path.")
+    parser.add_argument("--unique-tor", "-u",
+                        action="store_true", dest="unique_tor", default=False,
+                        help="Make requests over Tor with new Tor circuit after each request; increases runtime; requires Tor to be installed and in system path.")
+    parser.add_argument("--csv",
+                        action="store_true",  dest="csv", default=False,
+                        help="Create Comma-Separated Values (CSV) File."
+                        )
+    parser.add_argument("--site",
+                        action="append", metavar='SITE_NAME',
+                        dest="site_list", default=None,
+                        help="Limit analysis to just the listed sites. Add multiple options to specify more than one site."
+                        )
+    parser.add_argument("--proxy", "-p", metavar='PROXY_URL',
+                        action="store", dest="proxy", default=None,
+                        help="Make requests over a proxy. e.g. socks5://127.0.0.1:1080"
+                        )
+    parser.add_argument("--json", "-j", metavar="JSON_FILE",
+                        dest="json_file", default=None,
+                        help="Load data from a JSON file or an online, valid, JSON file.")
+    parser.add_argument("--timeout",
+                        action="store", metavar='TIMEOUT',
+                        dest="timeout", type=timeout_check, default=None,
+                        help="Time (in seconds) to wait for response to requests. "
+                             "Default timeout is infinity. "
+                             "A longer timeout will be more likely to get results from slow sites. "
+                             "On the other hand, this may cause a long delay to gather all results."
+                       )
+    parser.add_argument("--print-all",
+                        action="store_true", dest="print_all",
+                        help="Output sites where the username was not found."
+                       )
+    parser.add_argument("--print-found",
+                        action="store_false", dest="print_all", default=False,
+                        help="Output sites where the username was found."
+                       )
+    parser.add_argument("--no-color",
+                        action="store_true", dest="no_color", default=False,
+                        help="Don't color terminal output"
+                        )
+    parser.add_argument("username",
+                        nargs='+', metavar='USERNAMES',
+                        action="store",
+                        help="One or more usernames to check with social networks."
+                        )
+    parser.add_argument("--browse", "-b",
+                        action="store_true", dest="browse", default=False,
+                        help="Browse to all results on default browser.")
+
+    parser.add_argument("--local", "-l",
+                        action="store_true", default=False,
+                        help="Force the use of the local data.json file.")
+
+    args = parser.parse_args()
+
+    # Check for newer version of Sherlock. If it exists, let the user know about it
+    try:
+        r = requests.get("https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock/sherlock.py")
+
+        remote_version = str(re.findall('__version__ = "(.*)"', r.text)[0])
+        local_version = __version__
+
+        if remote_version != local_version:
+            print("Update Available!\n" +
+                  f"You are running version {local_version}. Version {remote_version} is available at https://git.io/sherlock")
+
+    except Exception as error:
+        print(f"A problem occured while checking for an update: {error}")
+
+
+    # Argument check
+    # TODO regex check on args.proxy
+    if args.tor and (args.proxy is not None):
+        raise Exception("Tor and Proxy cannot be set at the same time.")
+
+    # Make prompts
+    if args.proxy is not None:
+        print("Using the proxy: " + args.proxy)
+
+    if args.tor or args.unique_tor:
+        print("Using Tor to make requests")
+        print("Warning: some websites might refuse connecting over Tor, so note that using this option might increase connection errors.")
+
+    # Check if both output methods are entered as input.
+    if args.output is not None and args.folderoutput is not None:
+        print("You can only use one of the output methods.")
+        sys.exit(1)
+
+    # Check validity for single username output.
+    if args.output is not None and len(args.username) != 1:
+        print("You can only use --output with a single username")
+        sys.exit(1)
+
+
+    # Create object with all information about sites we are aware of.
+    try:
+        if args.local:
+            sites = SitesInformation(os.path.join(os.path.dirname(__file__), 'resources/data.json'))
+        else:
+            sites = SitesInformation(args.json_file)
+    except Exception as error:
+        print(f"ERROR:  {error}")
+        sys.exit(1)
+
+    # Create original dictionary from SitesInformation() object.
+    # Eventually, the rest of the code will be updated to use the new object
+    # directly, but this will glue the two pieces together.
+    site_data_all = {}
+    for site in sites:
+        site_data_all[site.name] = site.information
+
+    if args.site_list is None:
+        # Not desired to look at a sub-set of sites
+        site_data = site_data_all
+    else:
+        # User desires to selectively run queries on a sub-set of the site list.
+
+        # Make sure that the sites are supported & build up pruned site database.
+        site_data = {}
+        site_missing = []
+        for site in args.site_list:
+            counter = 0
+            for existing_site in site_data_all:
+                if site.lower() == existing_site.lower():
+                    site_data[existing_site] = site_data_all[existing_site]
+                    counter += 1
+            if counter == 0:
+                # Build up list of sites not supported for future error message.
+                site_missing.append(f"'{site}'")
+
+        if site_missing:
+            print(f"Error: Desired sites not found: {', '.join(site_missing)}.")
+
+        if not site_data:
+            sys.exit(1)
+
+    # Create notify object for query results.
+    query_notify = QueryNotifyPrint(result=None,
+                                    verbose=args.verbose,
+                                    print_all=args.print_all,
+                                    color=not args.no_color)
+
+    # Run report on all specified users.
+    for username in args.username:
+        results = sherlock(username,
+                           site_data,
+                           query_notify,
+                           tor=args.tor,
+                           unique_tor=args.unique_tor,
+                           proxy=args.proxy,
+                           timeout=args.timeout)
+
+        if args.output:
+            result_file = args.output
+        elif args.folderoutput:
+            # The usernames results should be stored in a targeted folder.
+            # If the folder doesn't exist, create it first
+            os.makedirs(args.folderoutput, exist_ok=True)
+            result_file = os.path.join(args.folderoutput, f"{username}.txt")
+        else:
+            result_file = f"{username}.txt"
+
+        with open(result_file, "w", encoding="utf-8") as file:
+            exists_counter = 0
+            for website_name in results:
+                dictionary = results[website_name]
+                if dictionary.get("status").status == QueryStatus.CLAIMED:
+                    exists_counter += 1
+                    file.write(dictionary["url_user"] + "\n")
+            file.write(f"Total Websites Username Detected On : {exists_counter}\n")
+
+        if args.csv:
+            with open(username + ".csv", "w", newline='', encoding="utf-8") as csv_report:
+                writer = csv.writer(csv_report)
+                writer.writerow(['username',
+                                 'name',
+                                 'url_main',
+                                 'url_user',
+                                 'exists',
+                                 'http_status',
+                                 'response_time_s'
+                                 ]
+                                )
+                for site in results:
+                    response_time_s = results[site]['status'].query_time
+                    if response_time_s is None:
+                        response_time_s = ""
+                    writer.writerow([username,
+                                     site,
+                                     results[site]['url_main'],
+                                     results[site]['url_user'],
+                                     str(results[site]['status'].status),
+                                     results[site]['http_status'],
+                                     response_time_s
+                                     ]
+                                    )
+        print()
+
+
+if __name__ == "__main__":
+    main()
diff --git a/sherlock/sites.py b/sherlock/sites.py
new file mode 100644
index 0000000..de8eeec
--- /dev/null
+++ b/sherlock/sites.py
@@ -0,0 +1,213 @@
+"""Sherlock Sites Information Module
+
+This module supports storing information about web sites.
+This is the raw data that will be used to search for usernames.
+"""
+import os
+import json
+import operator
+import requests
+import sys
+
+
+class SiteInformation():
+    def __init__(self, name, url_home, url_username_format, username_claimed,
+                 username_unclaimed, information):
+        """Create Site Information Object.
+
+        Contains information about a specific web site.
+
+        Keyword Arguments:
+        self                   -- This object.
+        name                   -- String which identifies site.
+        url_home               -- String containing URL for home of site.
+        url_username_format    -- String containing URL for Username format
+                                  on site.
+                                  NOTE:  The string should contain the
+                                         token "{}" where the username should
+                                         be substituted.  For example, a string
+                                         of "https://somesite.com/users/{}"
+                                         indicates that the individual
+                                         usernames would show up under the
+                                         "https://somesite.com/users/" area of
+                                         the web site.
+        username_claimed       -- String containing username which is known
+                                  to be claimed on web site.
+        username_unclaimed     -- String containing username which is known
+                                  to be unclaimed on web site.
+        information            -- Dictionary containing all known information
+                                  about web site.
+                                  NOTE:  Custom information about how to
+                                         actually detect the existence of the
+                                         username will be included in this
+                                         dictionary.  This information will
+                                         be needed by the detection method,
+                                         but it is only recorded in this
+                                         object for future use.
+
+        Return Value:
+        Nothing.
+        """
+
+        self.name                = name
+        self.url_home            = url_home
+        self.url_username_format = url_username_format
+
+        self.username_claimed    = username_claimed
+        self.username_unclaimed  = username_unclaimed
+        self.information         = information
+
+        return
+
+    def __str__(self):
+        """Convert Object To String.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        Nicely formatted string to get information about this object.
+        """
+
+        return f"{self.name} ({self.url_home})"
+
+
+class SitesInformation():
+    def __init__(self, data_file_path=None):
+        """Create Sites Information Object.
+
+        Contains information about all supported web sites.
+
+        Keyword Arguments:
+        self                   -- This object.
+        data_file_path         -- String which indicates path to data file.
+                                  The file name must end in ".json".
+
+                                  There are 3 possible formats:
+                                   * Absolute File Format
+                                     For example, "c:/stuff/data.json".
+                                   * Relative File Format
+                                     The current working directory is used
+                                     as the context.
+                                     For example, "data.json".
+                                   * URL Format
+                                     For example,
+                                     "https://example.com/data.json", or
+                                     "http://example.com/data.json".
+
+                                  An exception will be thrown if the path
+                                  to the data file is not in the expected
+                                  format, or if there was any problem loading
+                                  the file.
+
+                                  If this option is not specified, then a
+                                  default site list will be used.
+
+        Return Value:
+        Nothing.
+        """
+
+        if data_file_path is None:
+            # The default data file is the live data.json which is in the GitHub repo. The reason why we are using
+            # this instead of the local one is so that the user has the most up to date data. This prevents
+            # users from creating issue about false positives which has already been fixed or having outdated data
+            data_file_path = "https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock/resources/data.json"
+
+        # Ensure that specified data file has correct extension.
+        if not data_file_path.lower().endswith(".json"):
+            raise FileNotFoundError(f"Incorrect JSON file extension for data file '{data_file_path}'.")
+
+        if "http://"  == data_file_path[:7].lower() or "https://" == data_file_path[:8].lower():
+            # Reference is to a URL.
+            try:
+                response = requests.get(url=data_file_path)
+            except Exception as error:
+                raise FileNotFoundError(f"Problem while attempting to access "
+                                        f"data file URL '{data_file_path}':  "
+                                        f"{str(error)}"
+                                       )
+            if response.status_code == 200:
+                try:
+                    site_data = response.json()
+                except Exception as error:
+                    raise ValueError(f"Problem parsing json contents at "
+                                     f"'{data_file_path}':  {str(error)}."
+                                    )
+            else:
+                raise FileNotFoundError(f"Bad response while accessing "
+                                        f"data file URL '{data_file_path}'."
+                                       )
+        else:
+            # Reference is to a file.
+            try:
+                with open(data_file_path, "r", encoding="utf-8") as file:
+                    try:
+                        site_data = json.load(file)
+                    except Exception as error:
+                        raise ValueError(f"Problem parsing json contents at "
+                                         f"'{data_file_path}':  {str(error)}."
+                                        )
+            except FileNotFoundError as error:
+                raise FileNotFoundError(f"Problem while attempting to access "
+                                        f"data file '{data_file_path}'."
+                                       )
+
+        self.sites = {}
+
+        # Add all of site information from the json file to internal site list.
+        for site_name in site_data:
+            try:
+
+                self.sites[site_name] = \
+                    SiteInformation(site_name,
+                                    site_data[site_name]["urlMain"],
+                                    site_data[site_name]["url"],
+                                    site_data[site_name]["username_claimed"],
+                                    site_data[site_name]["username_unclaimed"],
+                                    site_data[site_name]
+                                   )
+            except KeyError as error:
+                raise ValueError(f"Problem parsing json contents at "
+                                 f"'{data_file_path}':  "
+                                 f"Missing attribute {str(error)}."
+                                )
+
+        return
+
+    def site_name_list(self):
+        """Get Site Name List.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        List of strings containing names of sites.
+        """
+
+        site_names = sorted([site.name for site in self], key=str.lower)
+
+        return site_names
+
+    def __iter__(self):
+        """Iterator For Object.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        Iterator for sites object.
+        """
+
+        for site_name in self.sites:
+            yield self.sites[site_name]
+
+    def __len__(self):
+        """Length For Object.
+
+        Keyword Arguments:
+        self                   -- This object.
+
+        Return Value:
+        Length of sites object.
+        """
+        return len(self.sites)
diff --git a/tests/__init__.py b/sherlock/tests/__init__.py
similarity index 100%
rename from tests/__init__.py
rename to sherlock/tests/__init__.py
diff --git a/tests/all.py b/sherlock/tests/all.py
similarity index 98%
rename from tests/all.py
rename to sherlock/tests/all.py
index c5b99c6..b7b7f91 100644
--- a/tests/all.py
+++ b/sherlock/tests/all.py
@@ -21,7 +21,7 @@ class SherlockDetectTests(SherlockBaseTest):
         Will trigger an assert if detection mechanism did not work as expected.
         """
 
-        site = 'Instagram'
+        site = 'BinarySearch'
         site_data = self.site_data_all[site]
 
         #Ensure that the site's detection method has not changed.
@@ -48,7 +48,7 @@ class SherlockDetectTests(SherlockBaseTest):
         Will trigger an assert if detection mechanism did not work as expected.
         """
 
-        site = 'Instagram'
+        site = 'BinarySearch'
         site_data = self.site_data_all[site]
 
         #Ensure that the site's detection method has not changed.
@@ -75,7 +75,7 @@ class SherlockDetectTests(SherlockBaseTest):
         Will trigger an assert if detection mechanism did not work as expected.
         """
 
-        site = 'Facebook'
+        site = 'Pinterest'
         site_data = self.site_data_all[site]
 
         #Ensure that the site's detection method has not changed.
@@ -102,7 +102,7 @@ class SherlockDetectTests(SherlockBaseTest):
         Will trigger an assert if detection mechanism did not work as expected.
         """
 
-        site = 'Facebook'
+        site = 'Pinterest'
         site_data = self.site_data_all[site]
 
         #Ensure that the site's detection method has not changed.
@@ -129,7 +129,7 @@ class SherlockDetectTests(SherlockBaseTest):
         Will trigger an assert if detection mechanism did not work as expected.
         """
 
-        site = 'Quora'
+        site = 'VK'
         site_data = self.site_data_all[site]
 
         #Ensure that the site's detection method has not changed.
@@ -156,7 +156,7 @@ class SherlockDetectTests(SherlockBaseTest):
         Will trigger an assert if detection mechanism did not work as expected.
         """
 
-        site = 'Quora'
+        site = 'VK'
         site_data = self.site_data_all[site]
 
         #Ensure that the site's detection method has not changed.
diff --git a/tests/base.py b/sherlock/tests/base.py
similarity index 74%
rename from tests/base.py
rename to sherlock/tests/base.py
index ff4c541..190aaaa 100644
--- a/tests/base.py
+++ b/sherlock/tests/base.py
@@ -2,11 +2,14 @@
 
 This module contains various utilities for running tests.
 """
-import json
 import os
 import os.path
 import unittest
 import sherlock
+from result import QueryStatus
+from result import QueryResult
+from notify import QueryNotify
+from sites  import SitesInformation
 import warnings
 
 
@@ -27,14 +30,32 @@ class SherlockBaseTest(unittest.TestCase):
         #TODO: Figure out how to fix the code so this is not needed.
         warnings.simplefilter("ignore", ResourceWarning)
 
-        # Load the data file with all site information.
-        data_file_path = os.path.join(os.path.dirname(os.path.realpath(sherlock.__file__)), "data.json")
-        with open(data_file_path, "r", encoding="utf-8") as raw:
-            self.site_data_all = json.load(raw)
+        #Create object with all information about sites we are aware of.
+        sites = SitesInformation()
+
+        #Create original dictionary from SitesInformation() object.
+        #Eventually, the rest of the code will be updated to use the new object
+        #directly, but this will glue the two pieces together.
+        site_data_all = {}
+        for site in sites:
+            site_data_all[site.name] = site.information
+        self.site_data_all = site_data_all
+
+        # Load excluded sites list, if any
+        excluded_sites_path = os.path.join(os.path.dirname(os.path.realpath(sherlock.__file__)), "tests/.excluded_sites")
+        try:
+          with open(excluded_sites_path, "r", encoding="utf-8") as excluded_sites_file:
+            self.excluded_sites = excluded_sites_file.read().splitlines()
+        except FileNotFoundError:
+          self.excluded_sites = []
+
+        #Create notify object for query results.
+        self.query_notify = QueryNotify()
 
-        self.verbose=False
         self.tor=False
         self.unique_tor=False
+        self.timeout=None
+        self.skip_error_sites=True
 
         return
 
@@ -85,24 +106,36 @@ class SherlockBaseTest(unittest.TestCase):
         site_data = self.site_data_filter(site_list)
 
         if exist_check:
-            check_type_text = "exists"
-            exist_result_desired = "yes"
+            check_type_text = "claimed"
+            exist_result_desired = QueryStatus.CLAIMED
         else:
-            check_type_text = "does not exist"
-            exist_result_desired = "no"
+            check_type_text = "available"
+            exist_result_desired = QueryStatus.AVAILABLE
 
         for username in username_list:
             results = sherlock.sherlock(username,
                                         site_data,
-                                        verbose=self.verbose,
+                                        self.query_notify,
                                         tor=self.tor,
-                                        unique_tor=self.unique_tor
+                                        unique_tor=self.unique_tor,
+                                        timeout=self.timeout
                                        )
             for site, result in results.items():
                 with self.subTest(f"Checking Username '{username}' "
                                   f"{check_type_text} on Site '{site}'"
                                  ):
-                    self.assertEqual(result['exists'], exist_result_desired)
+                    if (
+                         (self.skip_error_sites == True) and
+                         (result['status'].status == QueryStatus.UNKNOWN)
+                       ):
+                        #Some error connecting to site.
+                        self.skipTest(f"Skipping Username '{username}' "
+                                      f"{check_type_text} on Site '{site}':  "
+                                      f"Site returned error status."
+                                     )
+
+                    self.assertEqual(exist_result_desired,
+                                     result['status'].status)
 
         return
 
@@ -134,6 +167,7 @@ class SherlockBaseTest(unittest.TestCase):
 
         for site, site_data in self.site_data_all.items():
             if (
+                 (site in self.excluded_sites)                 or
                  (site_data["errorType"] != detect_type)       or
                  (site_data.get("username_claimed")   is None) or
                  (site_data.get("username_unclaimed") is None)
diff --git a/site_list.py b/site_list.py
index 3cc19a3..9e22883 100644
--- a/site_list.py
+++ b/site_list.py
@@ -1,42 +1,13 @@
 """Sherlock: Supported Site Listing
-This module generates the listing of supported sites.
+This module generates the listing of supported sites
+which can be found in sites.md
+It also organizes all the sites in alphanumeric order
 """
 import json
-import sys
-import requests
-import threading
-import xml.etree.ElementTree as ET
-from datetime import datetime
-from argparse import ArgumentParser, RawDescriptionHelpFormatter
 
 pool = list()
 
-def get_rank(domain_to_query, dest):
-    result = -1
-
-    #Retrieve ranking data via alexa API
-    url = f"http://data.alexa.com/data?cli=10&url={domain_to_query}"
-    xml_data = requests.get(url).text
-    root = ET.fromstring(xml_data)
-    try:
-        #Get ranking for this site.
-        dest['rank'] = int(root.find(".//REACH").attrib["RANK"])
-    except:
-        #We did not find the rank for some reason.
-        print(f"Error retrieving rank information for '{domain_to_query}'")
-        print(f"     Returned XML is |{xml_data}|")
-
-    return
-
-parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter
-                        )
-parser.add_argument("--rank","-r",
-                    action="store_true",  dest="rank", default=False,
-                    help="Update all website ranks (not recommended)."
-                    )
-args = parser.parse_args()
-
-with open("data.json", "r", encoding="utf-8") as data_file:
+with open("sherlock/resources/data.json", "r", encoding="utf-8") as data_file:
     data = json.load(data_file)
 
 with open("sites.md", "w") as site_file:
@@ -45,30 +16,17 @@ with open("sites.md", "w") as site_file:
 
     for social_network in data:
         url_main = data.get(social_network).get("urlMain")
-        data.get(social_network)["rank"] = 0
-        if args.rank:
-            th = threading.Thread(target=get_rank, args=(url_main, data.get(social_network)))
-        else:
-            th = None
-        pool.append((social_network, url_main, th))
-        if args.rank:
-            th.start()
+        pool.append((social_network, url_main))
 
     index = 1
-    for social_network, url_main, th in pool:
-        if args.rank:
-            th.join()
+    for social_network, url_main in pool:
         site_file.write(f'{index}. [{social_network}]({url_main})\n')
-        sys.stdout.write("\r{0}".format(f"Updated {index} out of {data_length} entries"))
-        sys.stdout.flush()
         index = index + 1
 
-    if args.rank:
-        site_file.write(f'\nAlexa.com rank data fetched at ({datetime.utcnow()} UTC)\n')
 
 sorted_json_data = json.dumps(data, indent=2, sort_keys=True)
 
-with open("data.json", "w") as data_file:
+with open("sherlock/resources/data.json", "w") as data_file:
     data_file.write(sorted_json_data)
 
-print("\nFinished updating supported site listing!")
+print("Finished updating supported site listing!")
diff --git a/sites.md b/sites.md
index 0170796..ac7d4b1 100644
--- a/sites.md
+++ b/sites.md
@@ -1,200 +1,304 @@
-## List Of Supported Sites (197 Sites In Total!)
-1. [2Dimensions](https://2Dimensions.com/)
-2. [500px](https://500px.com/)
-3. [7Cups](https://www.7cups.com/)
-4. [9GAG](https://9gag.com/)
-5. [About.me](https://about.me/)
-6. [Academia.edu](https://www.academia.edu/)
-7. [Al�k.cz](https://www.alik.cz/)
-8. [Anobii](https://www.anobii.com/)
-9. [Aptoide](https://en.aptoide.com/)
-10. [Archive.org](https://archive.org)
-11. [AskFM](https://ask.fm/)
-12. [BLIP.fm](https://blip.fm/)
-13. [Badoo](https://badoo.com/)
-14. [Bandcamp](https://www.bandcamp.com/)
-15. [Basecamp](https://basecamp.com/)
-16. [Behance](https://www.behance.net/)
-17. [BitBucket](https://bitbucket.org/)
-18. [BitCoinForum](https://bitcoinforum.com)
-19. [Blogger](https://www.blogger.com/)
-20. [Brew](https://www.brew.com/)
-21. [BuyMeACoffee](https://www.buymeacoffee.com/)
-22. [BuzzFeed](https://buzzfeed.com/)
-23. [Canva](https://www.canva.com/)
-24. [Carbonmade](https://carbonmade.com/)
-25. [CashMe](https://cash.me/)
-26. [Cent](https://cent.co/)
-27. [Cloob](https://www.cloob.com/)
-28. [Codecademy](https://www.codecademy.com/)
-29. [Codechef](https://www.codechef.com/)
-30. [Codementor](https://www.codementor.io/)
-31. [Coderwall](https://coderwall.com/)
-32. [Codewars](https://www.codewars.com)
-33. [ColourLovers](https://www.colourlovers.com/)
-34. [Contently](https://contently.com/)
-35. [Coroflot](https://coroflot.com/)
-36. [CreativeMarket](https://creativemarket.com/)
-37. [Crevado](https://crevado.com/)
-38. [Crunchyroll](https://www.crunchyroll.com/)
-39. [DEV Community](https://dev.to/)
-40. [DailyMotion](https://www.dailymotion.com/)
-41. [Designspiration](https://www.designspiration.net/)
-42. [DeviantART](https://deviantart.com)
-43. [Discogs](https://www.discogs.com/)
-44. [Discuss.Elastic.co](https://discuss.elastic.co/)
-45. [Disqus](https://disqus.com/)
-46. [Docker Hub](https://hub.docker.com/)
-47. [Dribbble](https://dribbble.com/)
-48. [Ebay](https://www.ebay.com/)
-49. [Ello](https://ello.co/)
-50. [Etsy](https://www.etsy.com/)
-51. [EyeEm](https://www.eyeem.com/)
-52. [Facebook](https://www.facebook.com/)
-53. [Fandom](https://www.fandom.com/)
-54. [Filmogs](https://www.filmo.gs/)
-55. [Flickr](https://www.flickr.com/)
-56. [Flightradar24](https://www.flightradar24.com/)
-57. [Flipboard](https://flipboard.com/)
-58. [Giphy](https://giphy.com/)
-59. [GitHub](https://www.github.com/)
-60. [GitLab](https://gitlab.com/)
-61. [Gitee](https://gitee.com/)
-62. [GoodReads](https://www.goodreads.com/)
-63. [Gravatar](http://en.gravatar.com/)
-64. [Gumroad](https://www.gumroad.com/)
-65. [GuruShots](https://gurushots.com/)
-66. [HackerNews](https://news.ycombinator.com/)
-67. [HackerOne](https://hackerone.com/)
-68. [HackerRank](https://hackerrank.com/)
-69. [House-Mixes.com](https://www.house-mixes.com/)
-70. [Houzz](https://houzz.com/)
-71. [HubPages](https://hubpages.com/)
-72. [Hubski](https://hubski.com/)
-73. [IFTTT](https://www.ifttt.com/)
-74. [ImageShack](https://imageshack.us/)
-75. [ImgUp.cz](https://imgup.cz/)
-76. [Instagram](https://www.instagram.com/)
-77. [Instructables](https://www.instructables.com/)
-78. [Investing.com](https://www.investing.com/)
-79. [Issuu](https://issuu.com/)
-80. [Itch.io](https://itch.io/)
-81. [Jimdo](https://jimdosite.com/)
-82. [Kaggle](https://www.kaggle.com/)
-83. [KanoWorld](https://world.kano.me/)
-84. [Keybase](https://keybase.io/)
-85. [Kik](http://kik.me/)
-86. [Kongregate](https://www.kongregate.com/)
-87. [Launchpad](https://launchpad.net/)
-88. [LeetCode](https://leetcode.com/)
-89. [Letterboxd](https://letterboxd.com/)
-90. [LiveJournal](https://www.livejournal.com/)
-91. [Lobsters](https://lobste.rs/)
-92. [Mastodon](https://mstdn.io/)
-93. [Medium](https://medium.com/)
-94. [MeetMe](https://www.meetme.com/)
-95. [MixCloud](https://www.mixcloud.com/)
-96. [MyAnimeList](https://myanimelist.net/)
-97. [Myspace](https://myspace.com/)
-98. [NPM](https://www.npmjs.com/)
-99. [NPM-Package](https://www.npmjs.com/)
-100. [NameMC (Minecraft.net skins)](https://namemc.com/)
-101. [NationStates Nation](https://nationstates.net)
-102. [NationStates Region](https://nationstates.net)
-103. [Newgrounds](https://newgrounds.com)
-104. [OK](https://ok.ru/)
-105. [OpenCollective](https://opencollective.com/)
-106. [Packagist](https://packagist.org/)
-107. [Pastebin](https://pastebin.com/)
-108. [Patreon](https://www.patreon.com/)
-109. [Pexels](https://www.pexels.com/)
-110. [Photobucket](https://photobucket.com/)
-111. [Pinterest](https://www.pinterest.com/)
-112. [Pixabay](https://pixabay.com/)
-113. [PlayStore](https://play.google.com/store)
-114. [Plug.DJ](https://plug.dj/)
-115. [Pokemon Showdown](https://pokemonshowdown.com)
-116. [Polygon](https://www.polygon.com/)
-117. [ProductHunt](https://www.producthunt.com/)
-118. [Quora](https://www.quora.com/)
-119. [Rajce.net](https://www.rajce.idnes.cz/)
-120. [Rate Your Music](https://rateyourmusic.com/)
-121. [Reddit](https://www.reddit.com/)
-122. [Repl.it](https://repl.it/)
-123. [ResearchGate](https://www.researchgate.net/)
-124. [ReverbNation](https://www.reverbnation.com/)
-125. [Roblox](https://www.roblox.com/)
-126. [Sbazar.cz](https://www.sbazar.cz/)
-127. [Scratch](https://scratch.mit.edu/)
-128. [Scribd](https://www.scribd.com/)
-129. [Signal](https://community.signalusers.org)
-130. [Slack](https://slack.com)
-131. [SlideShare](https://slideshare.net/)
-132. [Smashcast](https://www.smashcast.tv/)
-133. [SoundCloud](https://soundcloud.com/)
-134. [SourceForge](https://sourceforge.net/)
-135. [Speedrun.com](https://speedrun.com/)
-136. [Splits.io](https://splits.io)
-137. [Spotify](https://open.spotify.com/)
-138. [Star Citizen](https://robertsspaceindustries.com/)
-139. [Steam](https://steamcommunity.com/)
-140. [SteamGroup](https://steamcommunity.com/)
-141. [T-MobileSupport](https://support.t-mobile.com)
-142. [Taringa](https://taringa.net/)
-143. [Teknik](https://teknik.io/)
-144. [Telegram](https://t.me/)
-145. [Tellonym.me](https://tellonym.me/)
-146. [TikTok](https://www.tiktok.com/)
-147. [Tinder](https://tinder.com/)
-148. [TradingView](https://www.tradingview.com/)
-149. [Trakt](https://www.trakt.tv/)
-150. [Trello](https://trello.com/)
-151. [Trip](https://www.trip.skyscanner.com/)
-152. [TripAdvisor](https://tripadvisor.com/)
-153. [Twitch](https://www.twitch.tv/)
-154. [Twitter](https://www.twitter.com/)
-155. [Ultimate-Guitar](https://ultimate-guitar.com/)
-156. [Unsplash](https://unsplash.com/)
-157. [VK](https://vk.com/)
-158. [VSCO](https://vsco.co/)
-159. [Venmo](https://venmo.com/)
-160. [Vimeo](https://vimeo.com/)
-161. [Virgool](https://virgool.io/)
-162. [VirusTotal](https://www.virustotal.com/)
-163. [Wattpad](https://www.wattpad.com/)
-164. [We Heart It](https://weheartit.com/)
-165. [WebNode](https://www.webnode.cz/)
-166. [Wikidot](http://www.wikidot.com/)
-167. [Wikipedia](https://www.wikipedia.org/)
-168. [Wix](https://wix.com/)
-169. [WordPress](https://wordpress.com)
-170. [WordPressOrg](https://wordpress.org/)
-171. [YouNow](https://www.younow.com/)
-172. [YouPic](https://youpic.com/)
-173. [YouTube](https://www.youtube.com/)
-174. [Zhihu](https://www.zhihu.com/)
-175. [Zomato](https://www.zomato.com/)
-176. [authorSTREAM](http://www.authorstream.com/)
-177. [boingboing.net](https://boingboing.net/)
-178. [devRant](https://devrant.com/)
-179. [fanpop](http://www.fanpop.com/)
-180. [gfycat](https://gfycat.com/)
-181. [iMGSRC.RU](https://imgsrc.ru/)
-182. [last.fm](https://last.fm/)
-183. [mixer.com](https://mixer.com/)
-184. [osu!](https://osu.ppy.sh/)
-185. [segmentfault](https://segmentfault.com/)
-186. [Bookcrossing](https://www.bookcrossing.com/)
-187. [GDProfiles](https://gdprofiles.com/)
-188. [Bazar.cz](https://www.bazar.cz/)
-189. [Chatujme.cz](https://chatujme.cz/)
-190. [Av�zo.cz](https://www.avizo.cz/)
-191. [CNET](https://www.cnet.com/)
-192. [CapFriendly](https://www.capfriendly.com/)
-193. [Fiverr](https://www.fiverr.com/)
-194. [LiveLeak](https://www.liveleak.com/)
-195. [Gamespot](https://www.gamespot.com/)
-196. [Cracked](https://www.cracked.com/)
-197. [Viadeo](http://fr.viadeo.com/en/)
-
-Alexa.com rank data fetched at (2019-11-28 16:41:58.690068 UTC)
+## List Of Supported Sites (303 Sites In Total!)
+1. [2Dimensions](https://2Dimensions.com/)
+2. [3dnews](http://forum.3dnews.ru/)
+3. [500px](https://500px.com/)
+4. [7Cups](https://www.7cups.com/)
+5. [9GAG](https://www.9gag.com/)
+6. [About.me](https://about.me/)
+7. [Academia.edu](https://www.academia.edu/)
+8. [Alik.cz](https://www.alik.cz/)
+9. [AllTrails](https://www.alltrails.com/)
+10. [Anobii](https://www.anobii.com/)
+11. [Apple Discussions](https://discussions.apple.com)
+12. [Archive.org](https://archive.org)
+13. [Asciinema](https://asciinema.org)
+14. [Ask Fedora](https://ask.fedoraproject.org/)
+15. [AskFM](https://ask.fm/)
+16. [Audiojungle](https://audiojungle.net/)
+17. [Avizo](https://www.avizo.cz/)
+18. [BLIP.fm](https://blip.fm/)
+19. [BOOTH](https://booth.pm/)
+20. [Badoo](https://badoo.com/)
+21. [Bandcamp](https://www.bandcamp.com/)
+22. [Bazar.cz](https://www.bazar.cz/)
+23. [Behance](https://www.behance.net/)
+24. [BinarySearch](https://binarysearch.io/)
+25. [BitBucket](https://bitbucket.org/)
+26. [BitCoinForum](https://bitcoinforum.com)
+27. [Blogger](https://www.blogger.com/)
+28. [BodyBuilding](https://bodyspace.bodybuilding.com/)
+29. [Bookcrossing](https://www.bookcrossing.com/)
+30. [BuyMeACoffee](https://www.buymeacoffee.com/)
+31. [BuzzFeed](https://buzzfeed.com/)
+32. [CNET](https://www.cnet.com/)
+33. [CapFriendly](https://www.capfriendly.com/)
+34. [Carbonmade](https://carbonmade.com/)
+35. [Career.habr](https://career.habr.com/)
+36. [Cent](https://cent.co/)
+37. [Championat](https://www.championat.com/)
+38. [Chatujme.cz](https://chatujme.cz/)
+39. [Chess](https://www.chess.com/)
+40. [Cloob](https://www.cloob.com/)
+41. [CloudflareCommunity](https://community.cloudflare.com/)
+42. [Clozemaster](https://www.clozemaster.com)
+43. [Codecademy](https://www.codecademy.com/)
+44. [Codechef](https://www.codechef.com/)
+45. [Codepen](https://codepen.io/)
+46. [Codewars](https://www.codewars.com)
+47. [ColourLovers](https://www.colourlovers.com/)
+48. [Contently](https://contently.com/)
+49. [Coroflot](https://coroflot.com/)
+50. [Countable](https://www.countable.us/)
+51. [Cracked](https://www.cracked.com/)
+52. [Crevado](https://crevado.com/)
+53. [DEV Community](https://dev.to/)
+54. [DailyMotion](https://www.dailymotion.com/)
+55. [Designspiration](https://www.designspiration.net/)
+56. [DeviantART](https://deviantart.com)
+57. [Discogs](https://www.discogs.com/)
+58. [Discuss.Elastic.co](https://discuss.elastic.co/)
+59. [Disqus](https://disqus.com/)
+60. [Docker Hub](https://hub.docker.com/)
+61. [Dribbble](https://dribbble.com/)
+62. [Duolingo](https://duolingo.com/)
+63. [Ebay](https://www.ebay.com/)
+64. [Ello](https://ello.co/)
+65. [Etsy](https://www.etsy.com/)
+66. [Euw](https://euw.op.gg/)
+67. [EyeEm](https://www.eyeem.com/)
+68. [F3.cool](https://f3.cool/)
+69. [Facebook](https://www.facebook.com/)
+70. [Facenama](https://facenama.com/)
+71. [Fandom](https://www.fandom.com/)
+72. [Flickr](https://www.flickr.com/)
+73. [Flightradar24](https://www.flightradar24.com/)
+74. [Flipboard](https://flipboard.com/)
+75. [Football](https://www.rusfootball.info/)
+76. [FortniteTracker](https://fortnitetracker.com/challenges)
+77. [Freelance.habr](https://freelance.habr.com/)
+78. [Freelancer.com](https://www.freelancer.com/)
+79. [Freesound](https://freesound.org/)
+80. [GDProfiles](https://gdprofiles.com/)
+81. [Gamespot](https://www.gamespot.com/)
+82. [GetMyUni](https://getmyuni.com/)
+83. [Giphy](https://giphy.com/)
+84. [GitHub](https://www.github.com/)
+85. [GitLab](https://gitlab.com/)
+86. [Gitee](https://gitee.com/)
+87. [GoodReads](https://www.goodreads.com/)
+88. [Gravatar](http://en.gravatar.com/)
+89. [Gumroad](https://www.gumroad.com/)
+90. [GunsAndAmmo](https://gunsandammo.com/)
+91. [GuruShots](https://gurushots.com/)
+92. [HackTheBox](https://forum.hackthebox.eu/)
+93. [Hackaday](https://hackaday.io/)
+94. [HackerNews](https://news.ycombinator.com/)
+95. [HackerOne](https://hackerone.com/)
+96. [HackerRank](https://hackerrank.com/)
+97. [House-Mixes.com](https://www.house-mixes.com/)
+98. [Houzz](https://houzz.com/)
+99. [HubPages](https://hubpages.com/)
+100. [Hubski](https://hubski.com/)
+101. [ICQ](https://icq.com/)
+102. [IFTTT](https://www.ifttt.com/)
+103. [ImgUp.cz](https://imgup.cz/)
+104. [Imgur](https://imgur.com/)
+105. [Instagram](https://www.instagram.com/)
+106. [Instructables](https://www.instructables.com/)
+107. [Issuu](https://issuu.com/)
+108. [Itch.io](https://itch.io/)
+109. [Jimdo](https://jimdosite.com/)
+110. [Kaggle](https://www.kaggle.com/)
+111. [Kali community](https://forums.kali.org/)
+112. [Keybase](https://keybase.io/)
+113. [Kik](http://kik.me/)
+114. [Kongregate](https://www.kongregate.com/)
+115. [LOR](https://linux.org.ru/)
+116. [Launchpad](https://launchpad.net/)
+117. [LeetCode](https://leetcode.com/)
+118. [Letterboxd](https://letterboxd.com/)
+119. [Lichess](https://lichess.org)
+120. [LiveJournal](https://www.livejournal.com/)
+121. [LiveLeak](https://www.liveleak.com/)
+122. [Lobsters](https://lobste.rs/)
+123. [Lolchess](https://lolchess.gg/)
+124. [Medium](https://medium.com/)
+125. [Memrise](https://www.memrise.com/)
+126. [MixCloud](https://www.mixcloud.com/)
+127. [Munzee](https://www.munzee.com/)
+128. [MyAnimeList](https://myanimelist.net/)
+129. [MyMiniFactory](https://www.myminifactory.com/)
+130. [Myspace](https://myspace.com/)
+131. [NICommunityForum](https://www.native-instruments.com/forum/)
+132. [NameMC (Minecraft.net skins)](https://namemc.com/)
+133. [NationStates Nation](https://nationstates.net)
+134. [NationStates Region](https://nationstates.net)
+135. [Naver](https://naver.com)
+136. [Newgrounds](https://newgrounds.com)
+137. [Nightbot](https://nightbot.tv/)
+138. [NotABug.org](https://notabug.org/)
+139. [OK](https://ok.ru/)
+140. [OpenStreetMap](https://www.openstreetmap.org/)
+141. [Opensource](https://opensource.com/)
+142. [Oracle Community](https://community.oracle.com)
+143. [Otzovik](https://otzovik.com/)
+144. [OurDJTalk](https://ourdjtalk.com/)
+145. [PCGamer](https://pcgamer.com)
+146. [PCPartPicker](https://pcpartpicker.com)
+147. [PSNProfiles.com](https://psnprofiles.com/)
+148. [Packagist](https://packagist.org/)
+149. [Pastebin](https://pastebin.com/)
+150. [Patreon](https://www.patreon.com/)
+151. [Periscope](https://www.periscope.tv/)
+152. [Pinkbike](https://www.pinkbike.com/)
+153. [Pinterest](https://www.pinterest.com/)
+154. [PlayStore](https://play.google.com/store)
+155. [Pling](https://www.pling.com/)
+156. [Plug.DJ](https://plug.dj/)
+157. [Pokemon Showdown](https://pokemonshowdown.com)
+158. [Polarsteps](https://polarsteps.com/)
+159. [Polygon](https://www.polygon.com/)
+160. [ProductHunt](https://www.producthunt.com/)
+161. [PromoDJ](http://promodj.com/)
+162. [PyPi](https://pypi.org)
+163. [Quora](https://www.quora.com/)
+164. [Raidforums](https://raidforums.com/)
+165. [Rajce.net](https://www.rajce.idnes.cz/)
+166. [Rate Your Music](https://rateyourmusic.com/)
+167. [Realmeye](https://www.realmeye.com/)
+168. [Redbubble](https://www.redbubble.com/)
+169. [Reddit](https://www.reddit.com/)
+170. [Repl.it](https://repl.it/)
+171. [ResearchGate](https://www.researchgate.net/)
+172. [ReverbNation](https://www.reverbnation.com/)
+173. [Roblox](https://www.roblox.com/)
+174. [RubyGems](https://rubygems.org/)
+175. [Sbazar.cz](https://www.sbazar.cz/)
+176. [Scratch](https://scratch.mit.edu/)
+177. [Scribd](https://www.scribd.com/)
+178. [ShitpostBot5000](https://www.shitpostbot.com/)
+179. [Signal](https://community.signalusers.org)
+180. [Slack](https://slack.com)
+181. [Slashdot](https://slashdot.org)
+182. [SlideShare](https://slideshare.net/)
+183. [Smashcast](https://www.smashcast.tv/)
+184. [Smule](https://www.smule.com/)
+185. [SoundCloud](https://soundcloud.com/)
+186. [SourceForge](https://sourceforge.net/)
+187. [SoylentNews](https://soylentnews.org)
+188. [SparkPeople](https://www.sparkpeople.com)
+189. [Speedrun.com](https://speedrun.com/)
+190. [Splits.io](https://splits.io)
+191. [Sporcle](https://www.sporcle.com/)
+192. [SportsRU](https://www.sports.ru/)
+193. [Spotify](https://open.spotify.com/)
+194. [Star Citizen](https://robertsspaceindustries.com/)
+195. [Steam](https://steamcommunity.com/)
+196. [SteamGroup](https://steamcommunity.com/)
+197. [Steamid](https://steamid.uk/)
+198. [Strava](https://www.strava.com/)
+199. [SublimeForum](https://forum.sublimetext.com/)
+200. [Telegram](https://t.me/)
+201. [Tellonym.me](https://tellonym.me/)
+202. [TikTok](https://tiktok.com/)
+203. [Tinder](https://tinder.com/)
+204. [TrackmaniaLadder](http://en.tm-ladder.com/index.php)
+205. [TradingView](https://www.tradingview.com/)
+206. [Trakt](https://www.trakt.tv/)
+207. [TrashboxRU](https://trashbox.ru/)
+208. [Travellerspoint](https://www.travellerspoint.com)
+209. [Trello](https://trello.com/)
+210. [TripAdvisor](https://tripadvisor.com/)
+211. [TryHackMe](https://tryhackme.com/)
+212. [Twitch](https://www.twitch.tv/)
+213. [Twitter](https://mobile.twitter.com/)
+214. [Typeracer](https://typeracer.com)
+215. [Ultimate-Guitar](https://ultimate-guitar.com/)
+216. [Unsplash](https://unsplash.com/)
+217. [VK](https://vk.com/)
+218. [VSCO](https://vsco.co/)
+219. [Velomania](https://forum.velomania.ru/)
+220. [Venmo](https://venmo.com/)
+221. [Vero](https://vero.co/)
+222. [Vimeo](https://vimeo.com/)
+223. [Virgool](https://virgool.io/)
+224. [VirusTotal](https://www.virustotal.com/)
+225. [Warrior Forum](https://www.warriorforum.com/)
+226. [Wattpad](https://www.wattpad.com/)
+227. [We Heart It](https://weheartit.com/)
+228. [WebNode](https://www.webnode.cz/)
+229. [Whonix Forum](https://forums.whonix.org/)
+230. [Wikidot](http://www.wikidot.com/)
+231. [Wikipedia](https://www.wikipedia.org/)
+232. [Windy](https://windy.com/)
+233. [Wix](https://wix.com/)
+234. [WordPress](https://wordpress.com)
+235. [WordPressOrg](https://wordpress.org/)
+236. [Xbox Gamertag](https://xboxgamertag.com/)
+237. [YouNow](https://www.younow.com/)
+238. [YouPic](https://youpic.com/)
+239. [YouTube](https://www.youtube.com/)
+240. [Zhihu](https://www.zhihu.com/)
+241. [akniga](https://akniga.org/profile/blue/)
+242. [allmylinks](https://allmylinks.com/)
+243. [aminoapp](https://aminoapps.com/)
+244. [authorSTREAM](http://www.authorstream.com/)
+245. [babyRU](https://www.baby.ru/)
+246. [babyblogRU](https://www.babyblog.ru/)
+247. [chaos.social](https://chaos.social/)
+248. [couchsurfing](https://www.couchsurfing.com/)
+249. [d3RU](https://d3.ru/)
+250. [dailykos](https://www.dailykos.com)
+251. [datingRU](http://dating.ru)
+252. [devRant](https://devrant.com/)
+253. [drive2](https://www.drive2.ru/)
+254. [eGPU](https://egpu.io/)
+255. [eintracht](https://eintracht.de)
+256. [fixya](https://www.fixya.com)
+257. [fl](https://www.fl.ru/)
+258. [forum_guns](https://forum.guns.ru/)
+259. [forumhouseRU](https://www.forumhouse.ru/)
+260. [geocaching](https://www.geocaching.com/)
+261. [gfycat](https://gfycat.com/)
+262. [habr](https://habr.com/)
+263. [hackster](https://www.hackster.io)
+264. [hunting](https://www.hunting.ru/forum/)
+265. [iMGSRC.RU](https://imgsrc.ru/)
+266. [igromania](http://forum.igromania.ru/)
+267. [interpals](https://www.interpals.net/)
+268. [irecommend](https://irecommend.ru/)
+269. [jbzd.com.pl](https://jbzd.com.pl/)
+270. [jeuxvideo](http://www.jeuxvideo.com)
+271. [kofi](https://ko-fi.com)
+272. [kwork](https://www.kwork.ru/)
+273. [labpentestit](https://lab.pentestit.ru/)
+274. [last.fm](https://last.fm/)
+275. [leasehackr](https://forum.leasehackr.com/)
+276. [livelib](https://www.livelib.ru/)
+277. [mastodon.cloud](https://mastodon.cloud/)
+278. [mastodon.social](https://chaos.social/)
+279. [mastodon.technology](https://mastodon.xyz/)
+280. [mastodon.xyz](https://mastodon.xyz/)
+281. [mercadolivre](https://www.mercadolivre.com.br)
+282. [metacritic](https://www.metacritic.com/)
+283. [moikrug](https://moikrug.ru/)
+284. [mstdn.io](https://mstdn.io/)
+285. [nairaland.com](https://www.nairaland.com/)
+286. [nnRU](https://https://www.nn.ru/)
+287. [note](https://note.com/)
+288. [npm](https://www.npmjs.com/)
+289. [opennet](https://www.opennet.ru/)
+290. [osu!](https://osu.ppy.sh/)
+291. [phpRU](https://php.ru/forum/)
+292. [pikabu](https://pikabu.ru/)
+293. [pr0gramm](https://pr0gramm.com/)
+294. [prog.hu](https://prog.hu/)
+295. [radio_echo_msk](https://echo.msk.ru/)
+296. [satsisRU](https://satsis.info/)
+297. [social.tchncs.de](https://social.tchncs.de/)
+298. [spletnik](https://spletnik.ru/)
+299. [svidbook](https://www.svidbook.ru/)
+300. [toster](https://www.toster.ru/)
+301. [uid](https://uid.me/)
+302. [Atom Discussions](https://discuss.atom.io)
+303. [Quizlet](https://quizlet.com)
\ No newline at end of file