diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,27 @@
+# Eros
+
+A Haskell library for text censorship, using
+[DansGuardian Phraselists](http://contentfilter.futuragts.com/phraselists/).
+
+I converted those Phraselists to JSON. You can see the converted Phraselists
+[here](https://github.com/pharpend/eros/tree/master/res/phraselists-pretty). There
+are
+[compressed versions](https://github.com/pharpend/eros/tree/master/res/phraselists-ugly)
+for use in your code.
+
+Eros is still in development, and is not ready to be actually used. If you would
+like to contribute, please do.
+
+# Contributing
+
+If you want to contribute, you'll need `ghc` and `cabal-install` 
+
+0.  Clone the git repo
+
+        git clone https://github.com/pharpend/eros.git
+
+1.  Install in a sandbox
+
+        cd eros
+        cabal sandbox init
+        cabal install --enable-tests
diff --git a/eros.cabal b/eros.cabal
--- a/eros.cabal
+++ b/eros.cabal
@@ -1,5 +1,5 @@
 name:                eros
-version:             0.2.1.0
+version:             0.2.1.1
 synopsis:            A text censorship library.
 description:
   A Haskell library for censoring text, using
@@ -20,39 +20,13 @@
 category:            Text
 build-type:          Simple
 data-files:
-  res/schemata/erosc-input.json
-  res/schemata/erosc-output.json
-  res/schemata/phraselist.json
-  res/phraselists-ugly/chat.json
-  res/phraselists-ugly/conspiracy.json
-  res/phraselists-ugly/drug-advocacy.json
-  res/phraselists-ugly/forums.json
-  res/phraselists-ugly/gambling.json
-  res/phraselists-ugly/games.json
-  res/phraselists-ugly/gore.json
-  res/phraselists-ugly/id-theft.json
-  res/phraselists-ugly/illegal-drugs.json
-  res/phraselists-ugly/intolerance.json
-  res/phraselists-ugly/legal-drugs.json
-  res/phraselists-ugly/malware.json
-  res/phraselists-ugly/music.json
-  res/phraselists-ugly/news.json
-  res/phraselists-ugly/nudism.json
-  res/phraselists-ugly/peer2peer.json
-  res/phraselists-ugly/personals.json
-  res/phraselists-ugly/pornography.json
-  res/phraselists-ugly/proxies.json
-  res/phraselists-ugly/secret-societies.json
-  res/phraselists-ugly/self-labeling.json
-  res/phraselists-ugly/sport.json
-  res/phraselists-ugly/translation.json
-  res/phraselists-ugly/upstream-filter.json
-  res/phraselists-ugly/violence.json
-  res/phraselists-ugly/warez-hacking.json
-  res/phraselists-ugly/weapons.json
-  res/phraselists-ugly/webmail.json
-  
+  res/schemata/*.json
+  res/phraselists-ugly/*.json
 cabal-version:       >=1.10
+extra-source-files:
+  README.md
+  res/schemata/*.json
+  res/phraselists-pretty/*.json
 
 library
   exposed-modules:
@@ -70,10 +44,10 @@
     , bytestring
     , containers
     , text
-  hs-source-dirs:      src/lib/
+  hs-source-dirs:      src/library/
   default-language:    Haskell2010
 
-Test-Suite test-phrase
+Test-Suite test-eros
   type: exitcode-stdio-1.0
   hs-source-dirs: test/
   main-is: Main.hs
@@ -96,7 +70,7 @@
     , containers
     , eros
     , text
-  hs-source-dirs: src/erosc/
+  hs-source-dirs: src/client/
   main-is: Main.lhs
   default-language:    Haskell2010
   ghc-options: -Wall
diff --git a/res/phraselists-pretty/chat.json b/res/phraselists-pretty/chat.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/chat.json
@@ -0,0 +1,184 @@
+[
+  {
+    "phrase": "javachat",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "webbchat",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "webbtjatt",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "webchat",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chatkamer",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chatroom",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "irc",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ircd",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "javachat",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "javatjatt",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gaim",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "icq",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "msn2go",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aimexpress",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wbmsn",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "iloveim",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kiwibox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "webmessenger",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "e-messenger",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "web2messenger",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "onlinemessenger",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "msnger",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jpager",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "easymessage",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "trillian",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "instant messenger",
+    "score": 10,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/conspiracy.json b/res/phraselists-pretty/conspiracy.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/conspiracy.json
@@ -0,0 +1,345 @@
+[
+  {
+    "phrase": "conspir",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bizarre",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "top secret",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reptillian agenda",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "secret societ",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lunatic fringe",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "behind the scenes",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "paranormal",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "supernatural",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mind control",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "disinform",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brainwash",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bohemian grove",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "subliminal",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "subculture",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "coverup",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "truthseeking",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "truth seeking",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "symbolog",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "backmask",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rumormill",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cheating device",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "test device",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lock pick",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pick lock",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "intriguing",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "occult",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phantom",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all exposed",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "invisible empire",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alternative news",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exposing the lies",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big brother",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "one world government",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new world order",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "apocalyp",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "antichrist",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "control the people",
+    "score": 75,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "control the world",
+    "score": 75,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ufo",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "area 51",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alien sight",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extraterrestrial",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aliens",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skywatch",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cropcircle",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "secret base",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "secret plan",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lake monster",
+    "score": 40,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/domains-for-sale.json b/res/phraselists-pretty/domains-for-sale.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/domains-for-sale.json
@@ -0,0 +1,114 @@
+[
+  {
+    "phrase": "search our catalogue for more domains",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this domain may be for sale by its owner",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this website is for sale",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "domain names for sale",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buy domains",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "domain parking",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "domain auction",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "parking_form",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fabulousdomains",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sedo",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sedolinks",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this web page is parked",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buydomains.com",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fabulousdomains.com",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sedo.com",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sedoparking.com",
+    "score": 50,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/drug-advocacy.json b/res/phraselists-pretty/drug-advocacy.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/drug-advocacy.json
@@ -0,0 +1,65 @@
+[
+  {
+    "phrase": "american cannabis society",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drogenpolitik",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ganga",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ganja",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marihuanabeleid",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marijuanalagstiftning",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marijuanalovgivning",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "medicinal marijuana",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spliff",
+    "score": 60,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/forums.json b/res/phraselists-pretty/forums.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/forums.json
@@ -0,0 +1,212 @@
+[
+  {
+    "phrase": "Moderator",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Logged in users",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "The newest registered user",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Last message on the forum",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Show favorite forums",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Registered User",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forum member",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Max users online",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "New posts",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "who's online",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "topics",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "threads",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "posts",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "last post",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "last topic",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forum",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by PHPBB",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by UBB",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "by Web Wiz Forums",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by vBulletin",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by: vBulletin",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by SMF",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by pnForum",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Snitz Forums",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Invision Power Board",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "IPS, Inc.",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by: FUDforum",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "powered by groupee community",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Powered by Mailgust",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Bulletin Board Group",
+    "score": 40,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/gambling.json b/res/phraselists-pretty/gambling.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/gambling.json
@@ -0,0 +1,240 @@
+[
+  {
+    "phrase": "betting",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blackjack",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "casino",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "casinon",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "casinos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gamblers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gambling",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jackpot",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jackpott",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kasino",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kasinon",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loto",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lotteri",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lotterier",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lotteries",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lottery",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lotto",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "prispott",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "roulette",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "snake eyes",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "snakeeyes",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sports book",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sportsbook",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "totalisator",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "video poker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wagering",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wager",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "card room",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "green card lottery",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "greencard lottery",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "videopoker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virtual casino",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virtual vegas",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virtualcasino",
+    "score": 30,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/games.json b/res/phraselists-pretty/games.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/games.json
@@ -0,0 +1,247 @@
+[
+  {
+    "phrase": "games",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "puzzles",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "online game",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "multiplayer",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "multi-player",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arcade",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "poker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "solitaire",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mahjong",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mah jong",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "backgammon",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wheel of fortune",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scrabble",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bejeweled",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bingo",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jewel quest",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zuma",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "texttwist",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bespelled",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cubis",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "close combat",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "combat task force",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doom",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "delta force",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mortal kombat",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "popcap",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xbox",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gamecube",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playstation",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "game boy",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nintendo",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dreamcast",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bradygames",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "capcom",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "realarcade",
+    "score": 20,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/gore.json b/res/phraselists-pretty/gore.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/gore.json
@@ -0,0 +1,37 @@
+[
+  {
+    "phrase": "extremely gory",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "festering stinkpile",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "garbage house",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gore gallery",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gory pictures",
+    "score": 40,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/id-theft.json b/res/phraselists-pretty/id-theft.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/id-theft.json
@@ -0,0 +1,93 @@
+[
+  {
+    "phrase": "false id",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fake id",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "change your identit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whole new identit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "use a new ident",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "steal someone's identit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "create new ident",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "create a new ident",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "counterfeit birth cert",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "separate identit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "entirely new identit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bulletproof new identit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "counterfeit",
+    "score": 20,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/illegal-drugs.json b/res/phraselists-pretty/illegal-drugs.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/illegal-drugs.json
@@ -0,0 +1,555 @@
+[
+  {
+    "phrase": "2cb",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alkylnitrat",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alkyl nitrate",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amfetamiini",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amphetamine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amylnitrat",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amyl nitrate",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amylnitrit",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amyl nitrite",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anfetamina",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blowcaine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bong",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butylnitrat",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butyl nitrate",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cannabis",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cocaine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "crack house",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "crack pipe",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "crystal meth",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gamma hydroxybutyrate",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gamma hydroxybutyric",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ganga",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ganja",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ghb",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hallucinogen",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hallucinogenic",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hallucinogens",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hallusinogeeni",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hallusinogeenit",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "halluzinogen",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "halluzinogene",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hanf",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hasch",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hashish",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "heroiini",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "heroin",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huffing",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "inhalant",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "inhalants",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jointkippe",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ketamine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kokain",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "koks",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lsd",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lysergic acid diethylamide",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marihuana",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marijuana",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "methamphetamin",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "methamphetamine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "methamphetamines",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "methylenedioxyamphetamine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "methylenedioxyethylamphetamine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "methylenedioxymethamphetamine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "morphin",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "morphine",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "narcoti",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "narcotic",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "narcotics",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "narkotika",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "opiate",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "opium",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oppiare",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oppio",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pillole",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pills",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "poppers",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reefer",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reefers",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "roach clip",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rohypnol",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "roofies",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rophies",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shrooms",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soufflette",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "steriod",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "steriods",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stimulant",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stimulants",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stoned",
+    "score": 25,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/intolerance.json b/res/phraselists-pretty/intolerance.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/intolerance.json
@@ -0,0 +1,282 @@
+[
+  {
+    "phrase": "arabersmovs",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aryan",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aryan brotherhood",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aryan nation",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aryans",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bianco",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bichas",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black bastard",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bleekscheet",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bush boogie",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "coon",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fag",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fags",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flikker",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flikkers",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gook",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jigaboo",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "joden",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kamelvasker",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ku klux klan",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "neger",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "negersvans",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "negersvin",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nichten",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nikker",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raghead",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spaghettivreters",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spics",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spleetoog",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whitey",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wigger",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wops",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "faggot",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "honkey",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nigger",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "niggere",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sambo",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spaggar",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "white supremacy",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black supremacy",
+    "score": 25,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/legal-drugs.json b/res/phraselists-pretty/legal-drugs.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/legal-drugs.json
@@ -0,0 +1,275 @@
+[
+  {
+    "phrase": "alcohol",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alcoholic",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alcohol still",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alkoholi",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alkoholismi",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alkoholisti",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bartender",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bartenders",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beer",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "binge drinking",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bourbon",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "breweries",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brewery",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chewing tobacco",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cigarettes",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cigars",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "congnac",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drinking game",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drinking games",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "humidor",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "humidors",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jello shooter",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jello shooters",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "keg",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kegs",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "liquor",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "malt liquor",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "micro brew",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "microbrew",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "micro brewery",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "microbrewery",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mixed drinks",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pipe tobacco",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smokeless tobacco",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tequila",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vodka",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whiskey",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wineries",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "winery",
+    "score": 25,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/malware.json b/res/phraselists-pretty/malware.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/malware.json
@@ -0,0 +1,548 @@
+[
+  {
+    "phrase": "exhotbar",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hotbar",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "search bar",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "precisiontime",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gmt.exe",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cmesys.exe",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spyware",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adware",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "malware",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "keylogger",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your computer is infected",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your pc is infected",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alertspy",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "armorwall",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "botsquash",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "checkspy",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "consumeridentity",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spybouncer",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "microantivirus",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "purityscan",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "puritysweep",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adprotector",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spyblast",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ucontrol",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ultimate cleaner",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vbouncer",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "addestroyer",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whenu",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "claria",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spytrooper",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Malware Wipe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spy axe",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spy trooper",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "coldlife",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "decss",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fport",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "john the ripper",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pchelps network tracer",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tcpip protector pro",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "intellitamper",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "global killer",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "artic",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kikbak",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "winspy",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "b-s spy",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "netslayer",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "comload",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ezula",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cydoor",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "casinoonnet",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midaddle",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bargainbuddy",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mwsoemon",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mywebsearch",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "windupdates",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mediaaccess.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mediaacck.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "istsvc.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wtoolsa.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wtoolss.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "apropos",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "save.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bargains.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "salm.exe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "180search",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "weathercast",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "topicks",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gamespy arcade",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "malwarealarm",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your system is vulnerable to hackers' attacks",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your private information is in open access to other computers",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "the page you are looking for is blocked by the adware",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "attention! your system is currently exposed",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your pc is infected with spyware",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "get list of available antispyware products",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spyware detected",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "system might be at risk",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "harmful and malicious software detected",
+    "score": 50,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/music.json b/res/phraselists-pretty/music.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/music.json
@@ -0,0 +1,491 @@
+[
+  {
+    "phrase": "music",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "dirty",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "gangster",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "gangsta",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "hiphop",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "hip-hop",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "country",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "punk",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "soul",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pop",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "record label",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "randb",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "r&b",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "dirty",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "rap",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "rapper",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "gangsta",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "download",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "video",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "player",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "producer",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "promotion",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "album",
+        "score": 20,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "record label",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "recording artist",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lyrical",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beats",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beats per minute",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beat",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "radio",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "radio on demand",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "music on demand",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "artist search",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playlist",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "iplaylist",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "durty",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lyrics",
+    "score": 120,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lyrics archive",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lyrics by artist",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lyrics by title",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "request lyrics",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "submit lyrics",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "archived lyrics",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "polka",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jazz",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "classical",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hard rock",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rap",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reggae",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rapper",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gangsta",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "punk",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "r&b",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "r & b",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bluegrass",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ragtime",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "progressive rock",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new age",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boogie",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "easy listening",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beats4cheap",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pepitup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dj",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "deejay",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "disco",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rave",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beatbox",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "producers",
+    "score": 5,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/news.json b/res/phraselists-pretty/news.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/news.json
@@ -0,0 +1,492 @@
+[
+  {
+    "phrase": "cnn.com",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "local news",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "top stories",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in the news",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bbc news",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "week at a glance",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "week in pictures",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "top stories",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in pictures",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "news headlines",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "breaking headlines",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "newscast",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "news report",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "national news",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "news article",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "breaking news",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latest news",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "business news",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "national news",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "canadian press",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reuters",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "associated press",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "united press international",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pbs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nbc",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cbs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "co-write",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "co-producer",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ombudsperson",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ombudsman",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "news network",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ap network",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "searchable news",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "news site",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "newscast",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "current event",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "press associat",
+    "score": 65,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "story highlight",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "news coverage",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "current news",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "world news",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "post news",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arab news",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "times news",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "timesnews",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "daily news",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dailynews",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "worldnews",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "global news",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "journalis",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "investigative journalism",
+    "score": 125,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "news archive",
+    "score": 65,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "entertainment news",
+    "score": 75,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "entertainment directory",
+    "score": 75,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "newspaper",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new york times",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ny times",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "la times",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "post dispatch",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "washington times",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boston globe",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boston herald",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bbc news",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tehran times",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "atlanta journal",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "morning herald",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "post gazette",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "post-gazette",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live video",
+    "score": 75,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "video feed",
+    "score": 75,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/nudism.json b/res/phraselists-pretty/nudism.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/nudism.json
@@ -0,0 +1,135 @@
+[
+  {
+    "phrase": "clothes-free",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clothing optional",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naturism",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naturist",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naturists and nudists",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nekkid",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude beach",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude beaches",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude hik",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude recreation",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudism",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudism ring",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudist",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudists paradise",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudists-paradise",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudity",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "darebare",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cybernude",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "holy nature",
+    "score": 50,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/peer2peer.json b/res/phraselists-pretty/peer2peer.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/peer2peer.json
@@ -0,0 +1,254 @@
+[
+  {
+    "phrase": "applejuice",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ares",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "areslite",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "azureus",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bearshare",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bitcomet",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dshare",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "edonkey",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "emule",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grobster",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grokster",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gnotella",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gnucleus",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "imesh",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kademlia",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kazaaliteressurection",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kazaa",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kazaalite",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "klite",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "limewire",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "morpheus",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mutella",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phex",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "qtella",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shareaza",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soulseek",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swapper",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toad node",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "winmx",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xolox",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ed2k",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fasttrack",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gnutella",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kad",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "opennap",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "overnet",
+    "score": 20,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/personals.json b/res/phraselists-pretty/personals.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/personals.json
@@ -0,0 +1,324 @@
+[
+  {
+    "phrase": "adult personals",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "browse men",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "browse women",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "couples seeking couples",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "couples seeking men",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "couples seeking women",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cupid report",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cupid search",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dating guide",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dating service",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dating site",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "discreet relationship",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "find your perfect match",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "find your perfect partner",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "for single men and women",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "friend finder",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "friendfinder",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "friendfinder handle",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay personals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ideal partner",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "largest dating site",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "largest singles site",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian personals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "meeting men",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "meeting women",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "meet someone special",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "men seeking couples",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "men seeking men",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "men seeking women",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "online dating",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "personal ad",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": ".personals",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "personals community",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "personals network",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "photo personals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "search for your ideal partner",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "search personals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "seeking casual sex",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "seeking romance",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "singles online",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "singles site",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swingers directory",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women seeking couples",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women seeking men",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women seeking women",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "yahoo! personals",
+    "score": 30,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/pornography.json b/res/phraselists-pretty/pornography.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/pornography.json
@@ -0,0 +1,25044 @@
+[
+  {
+    "phrase": "adultos",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 70,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "bbw",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "bbws",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bdsm",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "mistress",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "beppin",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "biguns",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boff",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boob",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bra",
+    "score": 2,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bras",
+    "score": 2,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bugger",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butt",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "churd",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clit",
+    "score": 40,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "suck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "clits",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "suck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "clitty",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "uncut",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "un-cut",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "cock sucker",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cockage",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cocksucker",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "facial",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "her face",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "her tit",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "their face",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "their tit",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "facial site",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "cum filled",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum spread",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumming",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "swallow",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "cums",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumshot",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumshot",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumshots",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dicks",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo",
+    "score": 50,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "smut",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "dildos",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fellatio",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girl",
+    "score": 3,
+    "forest": [
+      {
+        "phrase": "fucking girls",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "drinking cum",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "getting fucked",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "glamour model",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 10,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "hardon",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "her clit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hooker",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "hookers",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbiana",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbo",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "milf",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nasty",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "negligee",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "newd",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "newds",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "newdz",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "nude",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudes",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudie",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudity",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nympho",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "orgies",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "teen",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "orgy",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "teen",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "penis",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "piss",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "piss flaps",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "putas",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free pic",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "hardcore",
+        "score": 20,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "rated x",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ratedx",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raunchy",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reaming",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rimjob",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rimmed",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rimming",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat link",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat love",
+    "score": 120,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat loving",
+    "score": 120,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat picture",
+    "score": 120,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat related",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat story",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "see thru",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "bikini",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "semen",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex",
+    "score": 3,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex factory",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexo",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sheer",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "bikini",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "shit",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slave",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "slutty",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smoo",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sodomy",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sperm",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "cum",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "stiffy",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swinger",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swingers",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thong",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tit",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "titty",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "topless",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "amateur",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "teen",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "twat",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "upskirt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wank",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "whore",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "whores",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whoring",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "smut",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "babe",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "illegal",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "shave",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "suck",
+        "score": 20,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "xxxx",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "\" dong",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "10\" cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "10\"+ cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% banned",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% free porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% hardcore",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% illegal",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% slut",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% softcore",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "100% whore",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "12\" cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "12\"+ cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "18 u.s.c. 2257 statement",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "18 years of age",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "18 years old",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "2257 compl",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "3 day trial membership",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "9\" cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "9\"+ cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aardvarking",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "absolutely anything goes",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ac movie pass",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "access to all of the adult check",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "action slut",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult audiences only",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult broadcast",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult check&reg; gold",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult check",
+    "score": 40,
+    "forest": [
+      {
+        "phrase": "id",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "adult content list",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult content",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult erotic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult film star",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult flics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult flix",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult friend finder",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult interactive",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult links",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult mag",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult material",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "extreme nature",
+        "score": 70,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "adult movie station",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult movie",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult newsgroup",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult only site",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult oriented",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult paysite",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult playground",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult related images",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult sex game",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult sex site",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult sex toy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult show",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult site",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult sites against child pornography",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult strip show",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult supersite",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult upskirt",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult verification system",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult videochat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult web site",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult webmaster",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult webring",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult website",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultcheck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult-film star",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultfriendfinder.com",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultlink",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultoptin",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultpass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultrevenueservice.com",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultrevenueservice",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adults only please",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adults only site",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adults only",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adult-videochat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adultweb",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adv:adlt",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adv:adult",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "after you cum",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "age verification",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all asian porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all black porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all girl orgies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all girl orgy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all lubed up",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all models are 18 years of age or older",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all models are 21 years of age or older",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all models are over 18 years",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all models",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "at least 18",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "at least 21",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "over the age of 18",
+        "score": 60,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "all petite",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "all porn pass",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "als scan",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "als-scan",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alt.binaries.pictures.",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alt.sex.",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur asian",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur beaver",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur girl",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur housewife",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur housewives",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur latina",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur links",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur pages free pics",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur schoolgirl",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur sucking",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur teen girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur university",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur wife",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur wives",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateur",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "tits",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 70,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "amateur-pages.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateurpages",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amateurs preview",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amazing sexual content",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal beads",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal debutants",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal ecstacy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal fist",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal juice",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal love",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal lube",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal orgy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal passion",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal pics",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal play",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal plug",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal ram",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal sex tour",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal sweeties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal sweety",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anal teen",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "analingus",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "analsex.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "animal fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "animal sex",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anime ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anime sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "applicant is 18 years",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "applicant is eighteen years",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "appreciate naked",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "appreciate nude",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "appreciate porn",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "april summers",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "are at least 18",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "are confirming that you are aged 18yrs and over",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "are naked",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "areolas",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "around your shaft",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arousing you",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse bandit",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse humper",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse humping",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse pounding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse ramming",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse tearing",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arseficken",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arseplay",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arse-pounding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arses open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asexual",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asia xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian exxxtasy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian nude",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian pleasure",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian pussies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asian whore",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asianerotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass cheeks",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass full of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass full of jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass humper",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass humping",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass master",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass pounding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass rammed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass ramming",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass tearing",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asses open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "assfuck",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "assfucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass-fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asshole and balls",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asshole eaten out",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asslick",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass-pounding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asspreading",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ass-wrecking",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "at least 18 years of age",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "at least 18 years of age",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "at least 18 years old",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "audio xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aureole",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "autocunnilingus",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "autofellatio",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "automatically renew every 30 days",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "avs code",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "avs login",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "avsofchoice.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "awesome bisexual",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "awesome to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "axxxess",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "babe fucks",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "babes in porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "babes masturbating",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "babes",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "back door boy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "backdoor beauties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "backdoor beauty",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "backdoor betty",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "backdoor penetration",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bad girls club",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bald beaver",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bald clam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bald pussies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bald pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bald smoo",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ball busting",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ball gag",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ball juice",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ball licking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ball sucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "balloon ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "balls deep in her",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "balls in mouth",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "banging a girl",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "banned in the usa",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "banned incest",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "banned",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "barely legal babes",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "barely legal boys",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "barely legal",
+    "score": 40,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "amateur",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "schoolgirl",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "starlet",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "suck",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "teen",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "barenaked",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "barnyard fuck",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bathtime lesbo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bathtime lezbo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bazoombas",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bbw ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bbw spreading",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bdsm ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bear lovin",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bears ezine",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality at its finest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality girl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality movie",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality site",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality toon",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality video",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality woman",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beastiality",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "beat your meat",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beating off",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beating your meat",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beautiful tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "become a tit man",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bent for a dick",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best adult content",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best adult site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best fuck",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best homosexual",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best lolita",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best porn site award",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best tits on the net",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bestiality",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bg_backaround",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bg_teendomain",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bi girls",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "biatch",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "big beautiful women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big black cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big boob babes",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big boy",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big cock sex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big dick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big fat cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big hard cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big melons",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big nipples",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big penis",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big round ass",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big tit ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big tits",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big titties",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "big wet cunt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "biggest tits on the net",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "biggest tits on the web",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "biggest-boobed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bi-girls",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bigteets.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bikini fantasies",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bikini",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "birching",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bisexual fetish",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bisexual",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bitch",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bitches eating pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bizzare fuck",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bizzare sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black desires",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "block access to this site by children",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blonde ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blonde sandwich",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow a wad",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow his biscuit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow his load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow job",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow my biscuits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow my load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow their biscuit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow their load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow there biscuit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow your biscuits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow your load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blow your member away",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blowjob babe",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blowjob movie",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blowjob",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blows neighbor",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blows neighbour",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blue balls",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blue movie",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "body slapping sex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bondage & bdsm",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bondage action",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bondage and bdsm",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bondage central",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bondage ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bondage",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "bone smoker",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bone smoking",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boning a chick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boobs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boost your sex life",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "booty college",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bordello",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boy for boy",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boy toy live",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boys fucking boys",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bp_backaround",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bp_gizmogizmo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "breast",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brianna banks",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "britney spears",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "cum",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "naked",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "nude",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sucking",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "brothel",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brown shower",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brunette ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brutal snuff",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bucket loads of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buckets of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buggery",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bukkake",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bung hole",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bunghole",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "burlesque",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bust a nut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bust on her face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bustiere",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "busty lesbian",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "busty",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butt fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butt necked",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butt pirate",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butt sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buttfuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "butt-necked",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buttock",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "buttplug",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buttsex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "call girl",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "callgirl",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cam girl",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "camel lips",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "camgirl",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "cam-girl",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "camisole",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "candle in puss",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "candles in puss",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "candywhore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cartoon hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cartoon orgy",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cartoon sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cartoon sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "castrate",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "castration",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "casual encounter",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "casual sex",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "category: adult",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cater to all fetishes",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ccbill.com",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ccbucks.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celeb nude",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celebrities in the nude",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celebrities nude",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celebrity gangbang",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celebrity nude",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celebrity sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celebs nude",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "centerfold sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "centerfold",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "centrefold",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "cover girls",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lapdanc",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cervix",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chancroid",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chat with horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chat with naked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chat with real girls",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cheerleader ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cheerleaders naked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chemise",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cherrie popper",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cherrie-popper",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cherry popper",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cherry-popper",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chicano lesbian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chick is well hung",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chicks with cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chicks with dicks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "child porn",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chippendales",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chiquita",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chix with dicks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chix with dix",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chlamydia",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chloe jones",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chocking your chicken",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chocolate booty",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chubby slut",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chunky cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chunky jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "circle jerk",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "classical bondage",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clevland steamer",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clit stimulation",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clit stimulator",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clitoral stimulation",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clitoral stimulator",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clitorilingus",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clitoris",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "closeup anal",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clothing optional",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club seventeen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club tranny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock and ball",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock buried",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock draining",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock eater",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock eating",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock explode",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock hungry",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in every hole",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in her ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in her loose",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in her pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in her",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in his",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in my",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in their",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in your ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock in your pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock pump",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock ring",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock size",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock smoker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock suck",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock sucking ebony",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock tease",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock thirsty",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock violate",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock worship",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cocks in every hole",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cocksmoker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock-smoker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock-stuffing",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cocksuck",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cock-suck",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "coital therapy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "coital",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "coitus",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "college fuck",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "college pussy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "college whore",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "collegepussy.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "color climax",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "come fuck me",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "come on her tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "come on their tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "concubine",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contain adult material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains adult content",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains adult material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains content that is not suit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains content which is not suit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains explicit imagery",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains explicit sexual",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains frontal nudity",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains images of an adult nature",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains nude oriented adult material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains partial frontal nudity",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains pornographic material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains sexually explicit material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains sexually explicit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "contains sexually oriented",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "content=\"adult\"",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "content=\"porn\"",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "content=\"pornography\"",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "content=\"sex\"",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "copulate",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "copulation",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "corn hole",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cornhole",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "couple fucking",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "couples fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "covered in cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "covered with cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "crave big cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "creamy xxx",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "crossdress",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum all over",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum burping",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum cheeks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum coated",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum covered",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum crazy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum diet",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum drench",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum drink",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum eat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum facial",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum gargle",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum gargling",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum guzzling",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum in and watch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum in her",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum in his",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum in my",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum in their",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum inside",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum now",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum on her",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum on his",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum on my",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum on their",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum party",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum pumping",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum shooter",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum shoots",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum shot",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum slurp",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum soak",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum spackled",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum stain",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum sucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum swallow",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum thirsty",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum-covered",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumdrinking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumiest",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumload",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumming all over",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumming by hand",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumming in her",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumming on her",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumming on their",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumming on there",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cumshot ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cum-shot",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunilingus",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunnilingus",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt drip",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt leak",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt lips",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt pump",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt ripper",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunt ripping",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cuntal",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cuntlap",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cuntlick",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cuntlips",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunts drip",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunts leak",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunts open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cunts",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cute tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cyberage platinum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cybererotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cyberfold",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cyberfuc",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cyberphuck",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cyberphuk",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cyberphuq",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cyberporn",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cybersex superstar",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cybersex",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "daddy cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "daily porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dailyporn",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "daughter fucks",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dd sized rack",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dd sized tit",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "deemed pornographic",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "deep fucked",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "deep puss",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "deep throat",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "cock",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "cum",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "dick",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sucking",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "whore",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "deeper penetration",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "deepthroat",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "delicious assholes",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "delicious clit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "delicious cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "delicious cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "delicious puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "demonseed",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "deprived little bitch",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "desnudas",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "desnudus",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dialer sex",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "diaper loving",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "diaper-loving",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dick in her",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dick in his",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dick in my",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dick in their",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dicked in all holes",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "diet of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "diet of jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo loving",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo maniac",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo orgies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo orgy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo parties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo party",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildo",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "smut",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "dildocam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildofest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dildosex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirtiest babes",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirtiest slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty cheerleader",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty gay",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty panties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty pics",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty sanchez",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dirty xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "disrobing area",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "do not enter if under 21 years of age",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "do not enter if you are a minor",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "do not enter if you are not at least 18",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doctor love",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dog fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dog sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dogfucked",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggie jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggie-jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggiestyle",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggie-style",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggy jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggy-jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggystyle",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "doggy-style",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "domination",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "sex",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "dominatrix",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dong penetration",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dorm cam",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dose of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dose of jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "double dildo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "double ended dildo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "double fist",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "double fucked",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "double headed dildo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "double penetration",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "down on her knees",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "down on his knees",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "down on your knees",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "download evidence eliminator",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "download internet eraser",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "downloadable porn",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dr love",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dr. love",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dreamed of sucking",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drenched in cum",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drink cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drink jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drinking cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drinking jizz",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dripping black pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dripping cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dripping jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dripping pink pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dripping pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drunk bitches fuck",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drunk virgin",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dry fuck her",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "easybucks.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat carpet",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat cum",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat cunt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat her arse",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat her ass",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat her out",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat her pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat his arse",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat his ass",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat my arse",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat my ass",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat my own cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat my pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat snatch",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat their arse",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat their ass",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat twat",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eat your own cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eating pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ebony blowjob",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ebony ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ebony on ivory",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ejaculate",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ejaculation",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "elder erotica",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "elephant cock",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "email erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "engaging in sexual acts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enjoy cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enjoying cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enlarge your penis",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enough cum",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enter for free porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enter your adult check password",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enter your agecheck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "enter your cyberage id",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erectile dysfunction",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erection ring",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic asphyxiation",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic audio stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic chat",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic club",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic email",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic enema",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic events",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic fantasies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic fantasy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic fetish",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic gallery",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic massage",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic nature",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic outdoors",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic personals",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic sex stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic sex story",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic story",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic talk",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic teen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic toys",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotic",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "photo",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "picture",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "erotica guide",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erotica",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "escort agency",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "escort directory",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "escort service",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "escorts directory",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eu amateurs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eunuch",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "euroteen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "excessive facials",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exclusive hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exclusive lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exclusive nude photo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "excrete",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "excretion",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "excretory",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exhibition ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exhibitionism",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exhibitionist",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "expecting sex",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "explicit anal",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "explicit images of nude adults",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "explicit lesbian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "explicit nude shows",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "explicit pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "explode your load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exploited",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "teen",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "explosive shit",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "expose to minors",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "exposed peehole",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extra adult site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme adult content",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme anal",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme bdsm",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme bondage",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme fetish",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme penetration",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme rape",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme sexual content",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme sodomy",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extreme xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "extremely hardcore",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ezlolita",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "face drenched",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "faces drenched",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "facial cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "facial feast",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "facial masters",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "facial sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fanstasyfest",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fantastic facial",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fantasy fest",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fantasy toons",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fantasy xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat bitch sex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat cock",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat fantasies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat horny mama",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat horny woman",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat horny women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat titties",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fat whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fathole",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "feel his cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "feel my cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "felatio",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "felching",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fem domination",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "female domination",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "female fisting",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "femdom",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "femme fatal",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fetish desires",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fetish ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fetish gallery",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fetish image",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fetish wear",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fhm",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "filthy sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "filthy slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "filthy turd",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "find such material personally offensive",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fine booty",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finest xxx",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger in her cunt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger in her puss",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger myself",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger up her anus",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger up her cunt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger up her puss",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger up his anus",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingerfuck",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "finger-fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingering girls",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingering women",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingering",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingers in her cunt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingers in her puss",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingers up her cunt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fingers up her puss",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fist fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisted her",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisted his",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisted",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fistfuck",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting fantas",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting gallery",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting movie",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting photo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fisting",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fists in her ass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fists in his ass",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flab fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flab-fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flash in public",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flashed in public",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flashing amateurs",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "food porn",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "foot fetish ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "foot fucker",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "for adults aged 18 and over",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "for discerning adults",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "for the discerning adult",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forbidden rape",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forced fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forced teen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forced to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forced to suck cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forced to suck his",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "forced-sex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "foreplay",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "foreskin",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fornicate",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fornication",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "four cocks in two holes",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free amateur pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free amateur",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free anal",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free anime",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free asian",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free ass",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free avs",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free balloon",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free bbw",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free bdsm",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free big tit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free black",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free blonde",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free blowjob",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free bondage",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free brunette",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free cheerleader",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free cumshot",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free dirty pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free dirty picture",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free dirty pix",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free ebony",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free exhibition",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free fetish",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free foot fetish",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free gay",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free indian",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free interracial",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free latina",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free lesbian",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free live fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free lolita",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free mature",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free panty",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free pantyhose",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free password",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free rape",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free russian",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free schoolgirl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free sex pic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free sex stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free sex!",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free shemale",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free smoking",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free smut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free softcore",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free stocking",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free stories",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free teen hotties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free teen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free tiny tits",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free tour",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "camera",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "girls",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 20,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "free transsexual",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free uncensored",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free upskirt",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free voyeur",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free x-rated",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "freeporn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "freesex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "frenum",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fresh young teen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "friendly erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck & suck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck a dog",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck a horse",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck and suck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck animal",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck away",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck circus",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck club",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck display",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck dogs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck fest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck flix",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck for the first time",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck her dad",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck her loose",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck her uncle",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck in the dark",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck little girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck my little",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck my loose",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck my pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck my wet",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck pic",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck series",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck sluts",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck toy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck twat",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck young boys",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck young girls",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck your mom",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck your mum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck your neighbor",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 20,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "fuckable",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked by a",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked by everyone",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked hard",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked in an alley",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked in ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked in every hole",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked slut",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked so hard",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked some",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked them",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked toon",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucked with utensils",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuckfest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking and sucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking black ass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking black pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking fat",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking for the first time",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking girls",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking horse",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking like animals",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking little girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking me",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking my pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking pink pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking slut",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking their brains out",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking virgins",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucking young girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucks neighbor",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucks neighbour",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucks some",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucksite",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck-site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fucktoy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuck-toy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fuckwad",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full fist in cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full fist in puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full fist in twat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full frontal",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full length porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full nude",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full of cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "full of jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fun with feces",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "funbags",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gang bang",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free preview",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free tour",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussies",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "gangbang girl",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gangbang model",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gangbang whore",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gangbang",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free preview",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free tour",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussies",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "gangraped",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "garter belt",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay anal hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay big cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay ebony",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay movies",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay sex pic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay sex stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay sex",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay swinger",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gay threesome",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gayclub",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "genital",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gerbling",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "get a bigger penis",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "get fucked for the first time",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "get instant access",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "get into adult paysites for free",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "get wild",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "get your ass pass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gets nailed",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "getting a hand job",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "getting fisted",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "getting fucked",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "getting gangbanged",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "getting rimmed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "getting your rocks off",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "giant cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "giant tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girl getting fucked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girl on girl action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girl orgies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girl orgy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girl porn",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girl-girl action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girls perform",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "girls suck cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "give some skank",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "giving blowjobs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "giving head",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golden shower",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golden trickle",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "goldenshower",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golden-shower",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gonhorrea",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gooey cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gooey jizz",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grab her tits",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grannies fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grannies n fatties",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "granny banging",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "granny fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "granny grab",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "granny grabbing",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "granny pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "granny sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "granny xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grannys pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "graphic sexual",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "graphic visual depictions",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "great assholes",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "great clits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "great cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "greek style",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "group fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "group masturbation",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "group sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "groupfuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "groupsex gallery",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "groupsex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grow your penis",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "g-spot play",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "g-spot stimulation",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "g-spot stimulator",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "g-spot vibe",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "g-spot vibrator",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "guyberfold",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gynaecology",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gynecological",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gynecology",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gyno cam",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gyno girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hairy goblet",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hairy puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hairy pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hairy tacho",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hand job",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hand to gland combat",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "handballing",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hand-job",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hanky panky",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hankypanky",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hanky-panky",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hard assfuck",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hard core",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hard fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hard interracial",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hard nipples",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore adult",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore animation",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore bdsm",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore bondage",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore celeb",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore couple",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore enthusiast",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore explicit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore fucking",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore gay",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore girls",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore hoe",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore image series",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore mega site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore milf",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore movie",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore online",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore pic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore pics in your email",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore pictorials",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore pix",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore shit",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore streaming video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore suck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore tour",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore tramps",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore uncensored",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore video series",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hardcore xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hard-on",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "having sex on camera",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "having sex on tape",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "having sex on video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "head job",
+    "score": 40,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "centerfold",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "cock",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "dick",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "suck",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "head-job",
+    "score": 40,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "centerfold",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "cock",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "dick",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "suck",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "heavy hotties",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "help us keep minors out",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hentai action",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hentai erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hentai playground",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hentai porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hentai sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hentai studios",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hentai",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "her fat ass",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hermaphrodite",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "herpes simplex",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "herpes",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "heterosexual",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hidden camera",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "high quality adult",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "high quality porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "highly offensive adult",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "high-quality porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hirsute honeys",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "home porn movies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "homoerotic",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "homosexual",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hornee",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horney",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horniest bitch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horniest",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny 4 cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny 4 puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny amateur",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny and curious",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny and lookin",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny biatch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny bisexual",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny bi-sexual",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny bitch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny black",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny blonde",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny brunette",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny cheer",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny college",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny couple",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny for cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny for puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny fun",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny grannies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny granny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny homemaker",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny homemakers",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny housewife",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny housewives",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny lesbian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny little girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny little slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny members",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny older",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny redhead",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny rob",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny school",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny slut",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny teen",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny woman",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horny",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hornyrob",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horse cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horse fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horse jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horse sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot & horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot 3-way",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot adult action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot adult pic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot amateur",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot and horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot babes being tied up",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot babes pissing",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot blowjob",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot dick",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot gays",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot house wifes",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot house wives",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot lesbian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot lesbo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot load",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot masturbation",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot men strip",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot model",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot nasty bitch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot nurse",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot pornstar",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot steamy sex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot teen bitch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot teen sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot teen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot toon action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot wet action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot women strip",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot young virgins",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hotel slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hotsex",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest adult site",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest babes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest girls",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest lesbian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest lesbo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest pics",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest porn star",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest pornstar",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest stripclubs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottest",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hottie",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "girl",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "huge breasts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge cumshot",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge dick",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge hooters",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge jugs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge knockers",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge natural tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huge tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hung like a horse",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "husband cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hustler mag",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hymen",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i accept full respnsibility for my actions",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i agree and want to proceed",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i am an adult",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i am at least 18 years of age",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i am at least 21 years of age",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i am naked",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i am not a law enforcement officer",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i am of legal age",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i am under age and want to exit now",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i understand if i misrepresent my age",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i undertake that i am over 21",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "i want to be raped",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "if i misrepresent my age",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "if you are a parent and you want to block this site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "if you are not an adult",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "if you want pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "if you want to block this site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "illegal pic",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "impotence",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "impotent",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in compliance with u.s.c",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in compliance with usc",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in her hot hole",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in her hot pussy",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in her pussy",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in her tight little ass",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in her wet hole",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in her wet pussy",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in his tight little ass",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in my hot hole",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in my hot pussy",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in my pussy",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in my wet hole",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in my wet pussy",
+    "score": 90,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in need of sex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in the nude",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in their hot hole",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in their hot pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in their pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in their tight little ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in their wet hole",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "in their wet pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "incest love",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "incest stories",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "incest story",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "incest video",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "incest",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "galler",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "inch cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "inch dong",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "indian ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "indian slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "inner thigh",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "innocent lolita",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "insane orgy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "instant access",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "fetish",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "intended for adult",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "intended for consenting adults",
+    "score": 50,
+    "forest": [
+      {
+        "phrase": "18 years",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "intended for mature adults",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "intended solely for adults",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "intense bondage",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interacial threesome",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interactive erotic",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interactive orgies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interactive orgy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interactive sex shows",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interactive xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "intercourse",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interracial ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interracial fuck",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interracial hardcore",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "interracial",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "is a fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "is an adult oriented site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "is an adult-oriented site",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jack off while you wait",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jack off",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jack-off machine",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jelly vibe",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jelly vibrator",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jenna jameson",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jerk ball licking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jerk ball",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jerking rod",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jilling off",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jism",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizm",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz all over",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz angel",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz burping",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz coated",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz diet",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz facial",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz guzzling",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz in her",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz in his",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz in the",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz in their",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz junkies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz junky",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz loving",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz party",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz shoots",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz slut",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz suck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz swallow",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz thirsty",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizz",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jizzloving",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "join now",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "juicing a woody",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "juicy cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "juicy funbags",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "juicy pussies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "juicy pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "juicy twat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "just legal starlet",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "just turned 18",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kama sutra",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kamasutra",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kara's adult playground",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kara's amateurs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kara's sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "karups",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "karup's",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kiddie porn",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "king of pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kinky slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kinky whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kinky xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "klixxx.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knocked up slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "labia",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lactate",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lactating pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lactating vagina",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lactating",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ladies with dicks",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "largest xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latex slut",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latex teens",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latex whore",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latina ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latina fetish",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latina porn",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "latino lesbian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "leaking smoo",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "leather thong",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "legal teen girls",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "legal teen video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "legal teen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian bordello",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian cowgirls",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian dildo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian double",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian fantasies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian fantasy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian gallery",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian haven",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian love",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian nurse",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian photo",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian site",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian strap",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian teens",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbian three",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbians lick",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbians masturbating",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lesbo series",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lewd photo",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lewd pic",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lezbo series",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick carpet",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick clit",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick cum",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick hard cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick her ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick her cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick her pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick her skanky",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick her slit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick her slot",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick his arse",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick his ass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick his cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick his cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick his dick",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lick the jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lickin lovers",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "licking black cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "licking her pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "licking pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "licking whore",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lifestyle without clothes",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "like to suck",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lingerie",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "amateur",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "lips around huge cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little girl sex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little puss",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little teen babe",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little teen babes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little whore",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "little-puss",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live anal",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live and uncensored",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live and un-censored",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live fuck shows",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live lesbian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live naked",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live orgies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live orgy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live penetration",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live pussy action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live sex chat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live sex room",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live sex show",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live sex",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live strip",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live teen sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live xxx cams",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live xxx",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "livehardcore.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "livesex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "livesex4less",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lluvia dorada",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "load of cream",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "load of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "load of jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita art",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita bitch",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita facial",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita free",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita gratis",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita project",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita site",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita studio",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita video",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita world",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolita",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "forbidden",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "lolitas art",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolitas free",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolitas gratis",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolitas sex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolitas site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolitas world",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lolitasex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loping your mule",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "love cuffs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "love doll",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "love to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "love to have cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "love to have your cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "love tool",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loves being fucked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loves cock in her ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loves cock in her pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loves cock in her twat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loves to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "luscious rack",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "luscious tit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "male fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "man cream",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "man seeking",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "manual sex",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "massive breasts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "massive hooters",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "massive jugs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "massive mammories",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "massive tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masterbate",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masterbating",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbate men",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbate with a",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbate women",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbating and cumming",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbating mom",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbating with a",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbation galler",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbation movie",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbation online",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbation pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbation picture",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbation technique",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masturbation video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "matchmaker",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "matchmaking",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "material intended for adult",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature babes fuck",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature babes having sex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature tits",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mature whore",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "matures in action",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "maximumcash.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "meat curtains",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "meet and fuck",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mega fuck site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mega porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "megaporn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "megasex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "member section",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "members entrance",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "members only",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "membership will automatically renew",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "men enlarge your penis",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "men fucking men",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "men masturbate",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "men seeking",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "menstruate on his semen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "menstruate on there semen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "menstruate on your semen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "messy blowjob",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "messy cum shot",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "messy cumshot",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "messy cum-shot",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "messy handjob",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mff action",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mff orgy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midget fantas",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midget fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midget lust",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midget porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midget sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "milf hunt",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "milf search",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "milf site",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "milk your dick",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "milking the bull",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "milking the mouse",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "millions of nude pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mistress",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mmf action",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mmf dick slapping",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mmf orgy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "model galler",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "models were over 18 at the time",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "models were over the age of 18",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "moist panties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mom fucking",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mom we fuck",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "moms you want to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "monkey spank",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "monster cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "monster hooters",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "most erotic",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "most explicit teen",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mosteroticteen",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mother fucker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "motherfuck",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mother-fucker",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mothers you want to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mouthful of cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mouthful of jizz",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "movies from paysites",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "muff dive",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "muff diving",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "muff sniff",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "muffdive",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "multiple cocks",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mums you want to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "munch pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "must be over 18 to enter",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "must not be viewed by minors",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "muthafuck",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mutual masturbation",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "my nude shots",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nail a fat chick",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nail a fat slut",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nail a fat whore",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nail a fat woman",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked amateur",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked and nasty",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked celeb",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked chick",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked on cam",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked on my cam",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked on their cam",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked online",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked young kiddy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naked young",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "pic",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "naked",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "nakled and spread",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nastiest and youngest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nastiest sex",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nasty hentai",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nasty interracial",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nasty shots",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nasty whore",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nasty xxx",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naughty amateur",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naughty neighbor",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naughty nurse",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naughty stories",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naughty story",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "naughty",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "necrophelia",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "needing spanking",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "needs a cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "needs cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "needs some cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "needs to fuck",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "never been fucked",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new girls added",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new hardcore",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new lolita",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new xxx",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "newcummer",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nice firm hooters",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nice looking slut",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nipple clamp",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nipple erection",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nipple",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "no avs!",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "no credit card needed",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "no credit card required",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "no minors allowed",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "no minors are allowed",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "non stop fornication",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nonstop fornication",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "non-stop fornication",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "not intended to be viewed by minors",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "not offended by sexually explicit material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "not show this material to minors",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "not suitable for all ages",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "not suitable for minors",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nubile beauties",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nubile tighties",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude adults engaged in sex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude amateur",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude beach",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude beautiful",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude beauty",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude bodybuilder",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude celebrit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude celebs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude for you",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude girl",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude image",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude in public",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude male celeb",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude model",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude mom",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude pictures and videos",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude pornstar",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude sex show",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nude webcam",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudes in all flavors",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudists paradise",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudists-paradise",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudity and sexual activity",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nudity does not offend me",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nugget sex award",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nut buster",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphet",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "illegal",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "lolita",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "model",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "paysite",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "photo",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "young",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "nympho fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nympho girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nympho slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nympho suck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nympho teen",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nympho whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nympho women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac suck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac teen",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nymphomaniac",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "object to viewing sexually explicit",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "offended by sexual material",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "offensive adult material",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "offensive gay",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "official nude",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "old and horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "old biddies spreading their legs",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "old n horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "old sluts",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "on film fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "on the end of your knob",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "on your knob",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "one cock is not enough",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "one hand typer",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "one hand typing",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "one-night stand",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "online pleasure",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "online sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "online teen sex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "only adults 18+ and over may enter",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "only be accessed by legal adults",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "open pussies",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "open pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oral frenzy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oral lover",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oral sex",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "orgasm balls",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "orgasm",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "cum",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "orgasmic lust",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "orgazm",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "orgy machine",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "orgy slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "outragerous sexual acts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "outside orgy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "overflowing tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "p0rn0",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "p0rno",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pamela sex video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "panties",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 20,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "panty ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "panty fetish",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "panty sniff",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pantyhose ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pantyhose fetish",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "participating verified website",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "party doll",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "party slut",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pay for porn",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pay site for free",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "paysite for free",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pay-site for free",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "paysite pass",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "free",
+        "score": 70,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pay-site",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "paysites for free",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pearl necklace",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "cum",
+        "score": 70,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "jizz",
+        "score": 70,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pearly bird",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pedophile",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pedophilia",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pee cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pee sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pee spurt",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pee stories",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pee story",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "peeing and shitting",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "peesex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pee-sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "penetrated teen",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "penetration shots",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "penetration",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "penile pleasure",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "penile",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "penis enlarger",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "penis suck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perfect cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perfect cunt",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perfect pussies",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perfect pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perfect slut",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perfect tits and ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perfect vagina",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perform for you",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "performing sexually explicit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "permit any minor to see this material",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "permit any minor to see this site",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "permit any minor to see this web",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perversion",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "perversity",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pervert",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "petite latina",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "petite slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "petite teen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "petite virgin",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phallic",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phallus",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phone sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phonesex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "photos of young girls",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phuck",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pick up sluts",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pics and movies",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pics of young girls",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pierced nipple",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pierced pussy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pimp daddy",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pink 4 free",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pink bit",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pink chocolate",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pink4free",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pinkbit",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pinup starlets",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "piss pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "piss play",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "piss slit",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "planet cum",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "planet cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "plastic cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "plastic dick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "play with my pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "play with your cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "play with your penis",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "play with yourself",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playboy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "played with herself",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playing with dildo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playing with your cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playing with your penis",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playing with yourself",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playmate",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "please click enter only if you are over the age of 18",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pleasure balls",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "plug every orifice",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "plump babe",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "plumper puss",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "polish your knob",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "polishing your knob",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "poo sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "poontang",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "poosex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pork flute",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pork her",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pork him",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn industry",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn membership",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn pass",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn pictures",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn pix",
+    "score": 60,
+    "forest": [
+      {
+        "phrase": "gallery",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "porn pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn show",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn star",
+    "score": 40,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "hot",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "wet",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussies",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "porn starlets",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn try out",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn tryout",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn wannabe",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn0",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornhole",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornholio",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornmegabucks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porno ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porno membership",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porno pass",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porno",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornographic",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porno-pass",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornostar",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porn-pass",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornshop",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornstar ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornstar lust",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornstar passion",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pornstars juggs",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "porntrack.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "posing nude",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "possess adult material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "possess or view sexually explicit",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pounding your pud",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pr0n",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "precum",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pre-cum",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pregnant & horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pregnant and horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pregnant hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pregnant sex",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pregnant slut",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "premium adult site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "premium hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "premium porn",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "preteen erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "preteen flesh",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "preteen galler",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pre-teen galler",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "preteen lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pre-teen lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pre-teen pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "preteen pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "preteen",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "anal",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "bald",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "cherries",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 60,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pre-teen",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "anal",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "bald",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "cherries",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 60,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "video",
+        "score": 60,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "preteen-erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "preteenflower",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "prick juice",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "prick tease",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "procreate",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "procreation",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "prophylactic",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "prostitute",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "prostitution",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pubescent female form",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "public flashings",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "public nude",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "public nudity",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "public sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "public shitting",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "public slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "puffy nipples",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pulling your johnson",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pulling your pud",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump her arse",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump her ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump her pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump his arse",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump his ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump my arse",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump my ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump my pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pump your bone",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pumped thoroughly",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pure hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pure porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies crammed full",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies get drilled",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies get fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies get wet",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies leak",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies ooze",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussies",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "penetrat",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pussy cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy crammed full",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy cramming",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy drip",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy eater",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy eating",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy filling",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy get drilled",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy get fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy get wet",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy juice",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy leak",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy lick",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy lips",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy ooze",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy open wide",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy pictures",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy pleaser",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy pounding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy quota",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy raider",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy raiding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy splitting cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy squirt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy stretching",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy stuffing",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy tease",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "penetrat",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "pussycam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy-cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy-pounding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pussy-stretching",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "quality adult sites",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "quality porn",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "quality sex shops",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "queens of porn",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape collection",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape comix",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape fantasies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape fantasy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape galleries",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape gallery",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape in comic",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape lover",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape loving",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape mpeg",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape oriented",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape pictures",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape pix",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape schoolgirls",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape series",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape sets",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape site",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape toon",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape video",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raped by you",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raped schoolgirls",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raped teens",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rapelove",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape-oriented",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rated xxx",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ratedxxx",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raunchy amateur",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raw nude teens",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raw sex videos",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "raw sex",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ready to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real anal",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real gangbang",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real life roots",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real lolita",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real porn star",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real pornstar",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real private teen",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real teen pic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real teen sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "realdoll",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "realistic cock",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rectum",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "redhead rape",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "redhead sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ripe tits",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rock hard and ready to",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rock hard cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rock hard nipple",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rock solid ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rock solid asses",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rogering",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "root sluts",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rooting",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rub your stiffy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rubber cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rubber dick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rubbing her",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rubbing him",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rubbing his",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rubbing the wad",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rugmunch",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "russian ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "russian hooker",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "russian lolita",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "russian rape",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "russian slut",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sadomasochism",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "saigon sluts",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "satisfy your fetish",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scantily",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 80,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "shit",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "smut",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "scat fantas",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat fun",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat mpeg",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat play",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scat playground",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "school girl",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "schoolgirl ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "schoolgirl sex",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "schoolgirl",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "school-girl",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "schoolgirls free",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "screw sluts",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "screwing some chick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "screwing some slut",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "screwing some whore",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "secret fetish",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "section 2257",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "see a bbw",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "see their pussies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "see us take our clothes off",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "self-stimulation",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "semen action",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "series photos",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "series pics",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex act",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex bizarre",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex bulletin board",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex chat line",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex chat",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex club",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex dialer",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex farm",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex fest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex illustrated",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex in the shower",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex link",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex maniac",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex mpeg",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex on the beach",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex on the",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex orgies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex orgy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex party",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex pics",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex pictures",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex ring",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex scene",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex shop",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex show",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex site",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex slave",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex stars",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex starved wife",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex starved wives",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex story",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex tour",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex tourism",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex toys",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex vacation",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex video feed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex video tapes",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex video",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex with no strings",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexcam",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexcheck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexfeed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexfest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex-hungry girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex-hungry slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex-hungry woman",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sex-hungry women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexiest",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexkey id",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexkey",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexmall",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexologist",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexology",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexplore",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexshop",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexswap2000.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sextoy",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "sextracker",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual activity",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual and young",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual content warning",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual content",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual entertainment",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual exploitation",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual friend",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexual maneuver",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexuality",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexually explicit conduct",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexually explicit language",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexually explicit materials please leave now",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexually explicit stories",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexually oriented",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexually wild",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexually",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexxx",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexxxhosting",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexy ass milf",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexy ass",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexy nudes",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexy slut",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexy",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shalong",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sharing cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sharing dick",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved beaver",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved clam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved pussies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved smoo",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaved snatch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaven beaver",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaven clam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaven cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaven haven",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaven lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaven pussies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shaven pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "she is a bbw",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "she likes anal",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "she loves anal",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "she needs dick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shemale ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shemale lounge",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shemale sex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shemale",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shemalelive",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit covered ass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit eat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit mustache",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit on her face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit on his face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit on my face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit on their face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shit on there face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shitfuck",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shitsex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shlong",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shocking cock",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shocking pictures",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shocking sex",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shocking video",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shoot cum",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shoot your load",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shooting off",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "should not be accessed by anyone who is younger than 18",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shove both fists",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "show pussy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "showercam",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "showered in cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "showered in piss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "showered in shit",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "showing off my body",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "showing pussy",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sick fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sickest sex video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "signup for adult check",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "silvercash.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sin city",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sinful hardcore",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sinful xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "singles club",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "site designed and intended solely for adults",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skanky ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skanky pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skanky whore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skimpy thong",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skinflute",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slapping the monkey",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slapping the salami",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slid his dick",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slid my dick",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slide their cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slide your cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sloppy anal",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sloppy fuck",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slurp cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slurp down cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slurp down semen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slurp semen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slurping cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut getting fucked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut housewife",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut housewives",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut looking hot",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut movie",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut nympho",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut series",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut showing her",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut showing",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut spreading",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut sucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut wanting",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut wife",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slut wives",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutfest",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutiest model",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutiest wife",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutiest wives",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutpuppy",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluts everywhere",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluts getting fucked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluts live",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluts on a farm",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluts on the net",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluts showing their",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluts.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sluttiest",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty girls",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty house wife",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty house wives",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty models",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty naked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty nympho",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty teen",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty wife",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty wives",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slutty",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smacking off",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smear cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smear precum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smear pre-cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smear shit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smeared cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smeared precum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smeared pre-cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smell pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smell the panties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smell the pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smell their panties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smelly pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smoking ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smoo juice",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smut erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smut server",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smutbucks.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "snatch",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "sniff panties",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sniff panty",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "snizzpod",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "snuff",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soaked by huge cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soaked panties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soaking panties",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soaking wet puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sodomize",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soft porn",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soft pussies",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soft pussy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softcore ass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softcore gallery",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softcore images",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softcore xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softest pussies",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softest pussy hair",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softest pussy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soggy sao",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soldier of cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "some cock",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sore cock",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sorority cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sorority pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sorority slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spanking desires",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spanking the monkey",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spanking the stick",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spattered with cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sperm angel",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sperm build-up",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sperm burping",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sperm guzzling",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sperm slut",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sperming the worm",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sphincter fog",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spill cum",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spill jizz",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spinchter",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "splattered with cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spray cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spray jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spray your load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spread my big ass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spring break nudity",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk drinker",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk drinking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk gargler",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk gargling",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk on her face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk on his face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk on their face",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunk swallow",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunking in a",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spunking on a",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spy cam",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spy on young women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "squirt jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "squirting pics",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "squirting pictures",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "squirting show",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "squirting video",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "starlet",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "starving for cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "starving for jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sticky facial",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stiff cock",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stimulate your pussy",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stocking ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stories ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strange sex",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "pic",
+        "score": 80,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "strangling the goose",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strap on dildo",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strap on penis",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strap on",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strap-on dildo",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strapon penetration",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strap-on penetration",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strap-on penis",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strap-on",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "streaming porn",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "streaming sex vid",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stretched cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strictly panties",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strip club party",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strip poker",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strip to naked",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stripper sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stripper",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strippers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stripping live",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stripping sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strips panties",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stroking your cock",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stroking your meat",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "strut for cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stuck in all holes",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stud fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck and fuck",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck cocks dry",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck her tit",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck my cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck my tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck on her cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck on her tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck on it slut",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck twat",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suck your balls",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucking black cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucking chrome",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucking cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucking the chrome",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucking two cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucking you off",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "suckoff arena",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucks the jizz",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sucks you off",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "super fucking fat",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swallow cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swallow jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swallow your load",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swedish sex ton",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sweet ass",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sweet fucking",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sweet love seed",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sweet puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swinger central",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swinger parties",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swinger party",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swingers parties",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swingers party",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swingers personals",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swollen cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "syphyllis",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "taboo fantas",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "taboo free",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "taboo sex",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "take it in every hole",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "take it in the ass",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "take it like a bitch",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "take multiple cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "takes cock",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "takes dick",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "takes your dick",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "taste black cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tasty ass",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen anal",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen ass",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen blowjob",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen bondage",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen cunt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen fuck",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen girls sucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen masturbating",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen related porn",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen sex videos",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen sex",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen slumber party",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen slut",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen spreads",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teenage slut",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teencum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teenmodel",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teens first time",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "testicle",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "that love big cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "that love cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "that love to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "the material on this server is adult oriented",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "the material on this site is adult oriented",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "the sex mall",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "these web pages are not intended to be viewed by minors",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "they are horny",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thick cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this adult site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this following pages contain adult material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this is an adult site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this is an adult website",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this site contains adult material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this site is for adults over 18",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this site is intended for adults",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this site is not suitable for minors",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "this site provides access to images of nude",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "three day trial membership",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "threesome",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "threeway sex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "throbbing rod",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thumbnailed erotic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thumbnailed porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thumbnailed xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tickle your dick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tickling your dick",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tied and fucked",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight anal",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight and juicy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight arse",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight ass",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight asshole",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight cunt",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight little puss",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight pussies",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tight young girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "till your balls are dry",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "till your balls go dry",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "time of the photographs are of age 18",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tiny little girl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tiny tits ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tiny tits",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tit fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tit lover",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tit photos",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tit sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tit sucker",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tit sucking",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tittie fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "titties",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "titty fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "to prevent minors from accessing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toilet cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toilet humiliation",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toilet sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toiletcam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toilet-cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toiletsex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toilet-sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tommy fuck pamela",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tommy lee sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tommy lee video",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tongue bath",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toon erotica",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toon xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "top adult site",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "top heavy babe",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "topless photo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "topless pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toplist",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "torture sex",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tortured pussies",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "totally nude",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "totally tits",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toys & vibrators",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toys and vibrators",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "trannies with cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tranny fuck",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tranny heaven",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tranny sex",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tranny tits",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "transexual encounter",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "transgender",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "transsexual ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "transsexual",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "transvestite",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "triple penetration",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "true celeb",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "try something kinky",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "turd eating",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "turd munching",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat eater",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat eating",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat licking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat loving",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat pounder",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat pounding",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "twat sucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "two cocks inside",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "two cocks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ugly fat women",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ultimate porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored adult",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored extreme",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored hentai",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored movies",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored photo",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored rape",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored toons",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncensored",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncircumcised",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uncut",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "un-cut",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "underage lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "underage",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 40,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "underground archive",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "underground rape",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "unfaithful.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "unique nude",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "unlimited free 3 day trial",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "unseen teen",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "until your balls are dry",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "until your balls go dry",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "until your balls hurt",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "up her ass",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "up skirt teens",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "up their asses",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "up your arse",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "up your ass",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "upskirt ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "upskirt photo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "upskirt shot",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "urophile",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "usc2257",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "use a dildo",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "use a vibrator",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "using a dildo",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "using a vibrator",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vagina",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vainy dick",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "valid credit card to confirm age",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "valuesex",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "venereal",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "verified avs",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "verified id",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "verified! avs",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "verify that you are an adult",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vibrator action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vintage porn",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virgin dyke",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virgin pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virgin schoolgirl",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virgin sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virgin spy cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virginity cam",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "virgins",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "voyeur cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "voyeur dorm",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "voyeur ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "voyeur",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "voyeurcam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "voyuer dorm",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vulgar",
+    "score": 3,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vulva",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wad of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wad of jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wads of cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wads of jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wank all over",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wank off",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wank on",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wank with",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wanker",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wanking",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wanna fuck",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "want a big penis",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "want more nude pics",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "want to fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "warm cum",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "warm jizz",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "warning! you must be over 18 to proceed",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch her pussy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch her strip",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch horny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch me strip",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch our girls",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch sluts",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch slutty",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch teen virgins",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch them get fucked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch them strip",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "watch young girls get",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "we strongly support parental controls",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "webmasters click here to protect your site",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "weird links",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "welcome to playboy",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "well hung black",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "were at least 18 years of age at the time of photography",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "were over the age of 18 years at the time they were filmed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "were over the age of 18 years at the time they were photo",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "were over the age of 18 years at the time they were photographed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "were over the age of 21 years at the time they were filmed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "were over the age of 21 years at the time they were photographed",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet and horny",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet facial",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet n wild",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet panties",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet panty",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet pussies",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet pussy",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet slut",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet spot",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet tshirt",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet t-shirt",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wet young teen",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wetdream",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wetpussy.com",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wetpussy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wh0re",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "porn",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "whack off",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whacking off",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "what my cock looks like",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whipping your turkey",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whips and chains",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "white cock",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "white girl black guy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whore cam",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whore doing anything",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whore doing everything",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whore drilled",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whorehouse",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whores doing anything",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "whores doing everything",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wife sucking cock",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wild and erotic",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wild fuck action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wild sex",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wildest xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "will fuck for you",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "will not allow minors",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "with dildo",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "with hard cocks",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wives get naked",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "woman peeing",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "woman seeking",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women fucking women",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women masturbate",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women peeing",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women seeking",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women shitting",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "women sucking and fucking",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "worst fuck",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "x rated",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xbanner.it",
+    "score": 130,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "x-entertainment",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "x-rated game",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "x-rated live",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "x-rated show",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "x-rated video",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xrated",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "x-rated",
+    "score": 20,
+    "forest": [
+      {
+        "phrase": "horny",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "slut",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "xxx",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "anal",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "banned",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fetish",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "fuck",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "galler",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "illegal",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "loose",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "movie",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "preview",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussies",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pussy",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "sex",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "shave",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "teen",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "tour",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "twat",
+        "score": 30,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "video",
+        "score": 30,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "xxx action",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx anime",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx asian",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx celeb",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx comic",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx content",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx couples",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx download",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx dvd",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx entertainment",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx ezine",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx fetish",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx geek",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx girl",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx hardcore",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx latina",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx live",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx magna",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx model",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx movie",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx mpeg",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx older women",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx password",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx paysite",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx photo galler",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx pics",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx pleasure",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx porn",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx product",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx rated",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx site",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx stories",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx teen",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx theater",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx toons",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx tranny",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx transexual",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx try out",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx tryout",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx video clip",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx video",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx wrestling",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxxadult",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxxcounter",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxxrated",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "xxx-rated",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you are about to enter a site that contains adult material",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you are over the age of 18",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you are of legal age",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you certify that you are over 18",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you certify that you are over 21",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you have to be at least 18 years to look",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you must be 18 to enter",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you must be of legal age to continue",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you must be over 21",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "you must currently be over the age of eighteen",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young and tight",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young flesh",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young horny",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young lesbian lovers",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young lolita",
+    "score": 50,
+    "forest": [
+      {
+        "phrase": "sexual",
+        "score": 50,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "young nasty teen",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young nude",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young nympho",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young slut",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "youngest and nastiest",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "youngest fuckers",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "youngest legal teens",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "youngest lolita",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "youngest teens on the web",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "youngest",
+    "score": 5,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your cock",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your doodle",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "your man seed",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zoo beastiality",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zoo fuck",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zoo love",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zoo movie",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zoo passion",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zoo sex",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zoo xxx",
+    "score": 80,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "young model",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teen model",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real breast",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexy ladies",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sexy lady",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "maxim girl",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hot stars",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nsfw",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "NWS",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "not safe for work",
+    "score": 150,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/proxies.json b/res/phraselists-pretty/proxies.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/proxies.json
@@ -0,0 +1,392 @@
+[
+  {
+    "phrase": "phproxy",
+    "score": 100,
+    "forest": [
+      {
+        "phrase": "post",
+        "score": 150,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "FreeProxyTemplates",
+    "score": 200,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "proxnetwork",
+    "score": 200,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "remove_scripts",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "glype",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "__proxy_url",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "__proxy_action",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "redirect_browse",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "zelune",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "proxy_url",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "proxy_options",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "proxyshout",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "proxy.com",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "surrogafy",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "surrogafier",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "start browsing through this cgi-based proxy by entering a url below",
+    "score": 200,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "remove ads",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hide referrer information",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "show url entry form",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "remove all cookies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "recommended for anonymity",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "remove all scripts",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dmirror",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nph-proxy",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nph-pro",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cgiproxy",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "location via proxy",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cecid",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "censorship circumvention device",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "remove banned words completely",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "filter banned words",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "please enter url to access",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arbitroweb",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "keep your identity hidden",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "high anonymity",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "proxy",
+    "score": 5,
+    "forest": [
+      {
+        "phrase": "Include mini URL",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "Remove client-side scripting",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "Strip page title",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "encode url",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "allow cookies",
+        "score": 50,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "enter site url",
+        "score": 150,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "encrypt urls",
+        "score": 150,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "remove scripts",
+        "score": 150,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "proxies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "public prox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "proxy list",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "unblock websites",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hacking dansguardian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hacking dans guardian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hack dansguardian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bypassing dansguardian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bypassing dans guardian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bypass dansguardian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bypass web filter",
+    "score": 30,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/secret-societies.json b/res/phraselists-pretty/secret-societies.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/secret-societies.json
@@ -0,0 +1,338 @@
+[
+  {
+    "phrase": "secret societ",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fraternal order",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fraternal society",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fraternal association",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fraternal league",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "superior general",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "united order",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "united society",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "united association",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "united league",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "union league",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bilderberg group",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skull and bones",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skull & bones",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ku klux klan",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loyal order",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jacobin",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "job's daughters",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of the golden eagle",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jacobite",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jesuit order",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "company of sion",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "illuminati",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fiat lux",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hibernians",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "the red men",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "freemason",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "master mason",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "masonic",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "odd fellows",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rosicrucians",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "order of eastern star",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "order of foresters",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "order of freesmiths",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "order of gleaners",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "order of owls",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "order of the",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "order of druids",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "loyal order of",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "independent order of",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of pythias",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of malta",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights templar",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of the holy sepulchre",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of the holy cross",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of the globe",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of the midnight mystery",
+    "score": 45,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knights of the honor",
+    "score": 45,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/self-labeling.json b/res/phraselists-pretty/self-labeling.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/self-labeling.json
@@ -0,0 +1,23 @@
+[
+  {
+    "phrase": "content=\"RTA-5042-1996-1400-1577-RTA\"",
+    "score": 200,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "meta name=\"Rating\" content=\"Mature\"",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "meta name=\"Rating\" content=\"Restricted\"",
+    "score": 200,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/sport.json b/res/phraselists-pretty/sport.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/sport.json
@@ -0,0 +1,3530 @@
+[
+  {
+    "phrase": "sportsillustrated",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "si.com",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "espn",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "skate",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stating",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sports scores",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "season pass",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "season ticket",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tournament",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "team player",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dressing room",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "teammate",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "train with the team",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spring training",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "professional player",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "national team",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "regionals",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midfield",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "outfield",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "outfitter",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clubhouse",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club member",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club due",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club fee",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nfl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cfl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rink",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nba",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wnba",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ncaa",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nhl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lpga",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pga",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tpc",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wta",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mls",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uefa",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "atp",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "home match",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gymnasium",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "team tryout",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "players association",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "trading deadline",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "global cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "world cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gladiator",
+    "score": 65,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "referee",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "basketball",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "football",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "soccer",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "volleyball",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "badminton",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hockey",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lacrosse",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fox hunting",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rugby",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "baseball",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boxing",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wrestling",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tennis",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "racquetball",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cricket",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "snooker",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "motorsport",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "athletics",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "playoff",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hall of fame",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pro bowl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pre-game",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "half-time",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "halftime",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "super bowl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "home run",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "badminton",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "racket",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shuttlecock",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "billiards",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bowling",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boxing",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cricket",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cycling",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hockey",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "figure skating",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gymnastics",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lacrosse",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "polo",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rodeo",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rowing",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rugby",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marathon",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "softball",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "squash",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swim",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "diving",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "diver",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "triathlon",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stadium",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "volleyball",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "weightlift",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wrestling",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hollywood award",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kiteboard",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aberdeen ironbirds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aguascalientes rieleros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "aiken foxhounds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "akron aeros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "albuquerque isotopes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "alexandria aces",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "altoona curve",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amarillo dillas",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "anderson joes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "angel�polis tigres",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arkansas travelers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arizona league",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "asheville tourists",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "atlantic city surf",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "auburn doubledays",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "augusta greenjackets",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bakersfield blaze",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "batavia muckdogs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beloit snappers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "billings mustangs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "binghamton mets",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "birmingham barons",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bluefield orioles",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boise hawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bowie baysox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bradenton juice",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brevard county manatees",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bridgeport bluefish",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bristol white sox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brockton rox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "brooklyn cyclones",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buffalo bisons",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "burlington bees",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "burlington royals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "calgary vipers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "camden riversharks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "campeche piratas",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "carolina mudcats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "casper rockies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cedar rapids kernels",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "charleston riverdogs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "charlotte knights",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "charlotte county redfish",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chattanooga lookouts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chico outlaws",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chillicothe paints",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clearwater threshers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "clinton lumberkings",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "coastal bend aviators",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "colorado springs sky sox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "columbus catfish",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "columbus clippers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "connecticut defenders",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "corpus christi hooks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "danville braves",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dayton dragons",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "daytona cubs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "delmarva shorebirds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dunedin blue jays",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "durham bulls",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "edinburg coyotes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "edmonton cracker-cats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "el paso diablos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "elizabethton twins",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "erie seawolves",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "eugene emeralds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "evansville otters",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "everett aquasox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fargo-moorhead redhawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "florence freedom",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fort myers miracle",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fort wayne wizards",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fort worth cats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "frederick keys",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fresno grizzlies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "frisco roughriders",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fullerton flyers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gary southshore railcats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gateway grizzlies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "grand canyon rafters",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "great falls white sox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "great lakes loons",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "greeneville astros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "greensboro grasshoppers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "greenville drive",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast braves",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast dodgers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast indians",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast marlins",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast nationals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast phillies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast pirates",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast red",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast tigers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast twins",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gulf coast yankees",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hagerstown suns",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "harrisburg senators",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "helena brewers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hickory crawdads",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "high desert mavericks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "honolulu sharks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hudson valley renegades",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "huntsville stars",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "idaho falls chukars",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "indianapolis indians",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "inland empire 66ers of san bernardino",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "iowa cubs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jacksonville suns",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jamestown jammers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "johnson city cardinals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "joliet jackhammers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jupiter hammerheads",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kalamazoo kings",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kane county cougars",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kannapolis intimidators",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kansas city t-bones",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kingsport mets",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kinston indians",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "laguna vaqueros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lake county captains",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lake elsinore storm",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lakeland flying tigers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lakewood blueclaws",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lancaster barnstormers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lancaster jethawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lansing lugnuts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "laredo broncos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "las vegas 51s",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lexington legends",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lincoln saltdogs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "long beach armada",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "long island ducks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "louisville bats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lowell spinners",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lynchburg hillcats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "macon music",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mahoning valley scrappers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "maryland road warriors",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "memphis redbirds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mesa solar sox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "m�xico diablos rojos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "midland rockhounds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mississippi braves",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "missoula osprey",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mobile baybears",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "modesto nuts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "monclova acereros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "monterrey sultanes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "montgomery biscuits",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "myrtle beach pelicans",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nashua pride",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nashville sounds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new britain rock cats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new hampshire fisher cats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new haven county cutters",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new jersey jackals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new orleans Zephyrs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "newark bears",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "norfolk tides",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "north shore honu",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "north shore spirit",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oaxaca guerreros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ogden raptors",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oklahoma redhawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "omaha royals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oneonta tigers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "orem owlz",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ottawa lynx",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "palm beach cardinals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pawtucket red sox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pensacola pelicans",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "peoria chiefs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "peoria javelinas",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "peoria saguaros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phoenix desert dogs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "portland beavers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "portland sea dogs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "potomac nationals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "princeton devil rays",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "puebla pericos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Quebec capitales",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rancho cucamonga Quakes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reading phillies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "reno silver sox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "richmond braves",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rio grande valley whitewings",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "river city rascals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rochester red wings",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rockford riverhawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rome braves",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "round rock express",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sacramento river cats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "salem avalanche",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "salem-keizer volcanoes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "salt lake bees",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "saltillo saraperos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san angelo colts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san antonio missions",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san diego surf dawgs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san jose giants",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san luis tuneros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sarasota reds",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "savannah sand gnats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "schaumburg flyers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scranton/wilkes-barre red barons",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slippery rock sliders",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shreveport sports",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sioux city explorers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sioux falls canaries",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "somerset patriots",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "south bend silver hawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "south georgia peanuts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "southern illinois miners",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "southern maryland blue crabs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spokane indians",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "springfield cardinals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "state college spikes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "staten island yankees",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stockton ports",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "st. george roadrunners",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "st. joe blacksnakes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "st. lucie mets",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "st. paul saints",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "surprise scorpions",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sussex skyhawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swing of the Quad cities",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "syracuse chiefs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tabasco olmecas",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tacoma rainiers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tampa yankees",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tennessee smokies",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tijuana portros",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toledo mud hens",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "traverse city beach bums",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "trenton thunder",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tri-city dust devils",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tri-city valley cats",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tucson sidewinders",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tulsa drillers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "utica blue sox",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vancouver canadians",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rojos del �guila de veracruz",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vermont lake monsters",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vero beach dodgers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "visalia oaks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "waikiki beach boys",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "washington wild things",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "west michigan whitecaps",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "west oahu canefires",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "west tenn diamond jaxx",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "west virginia power",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wichita wranglers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "williamsport crosscutters",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wilmington blue rocks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "windy city thunderbolts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "winnipeg goldeyes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "winston-salem warthogs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wisconsin timber rattlers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "worcester tornadoes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "yakima bears",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "york revolution",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "yucat�n leones",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "yuma scorpions",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "atlanta thrashers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boston bruins",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buffalo sabres",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "calgary flames",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "carolina hurricanes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chicago blackhawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "colorado avalanche",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "columbus blue jackets",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dallas stars",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "detroit red wings",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "edmonton oilers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "florida panthers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "los angeles kings",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "minnesota wild",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "montreal canadiens",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nashville predators",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new jersey devils",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new york islanders",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new york rangers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ottawa senators",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "philadelphia flyers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phoenix coyotes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pittsburgh penguins",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san jose sharks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "st. louis blues",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "stanley cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tampa bay lightning",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "toronto maple leafs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vancouver canucks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "washington capitals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "arizona cardinals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "atlanta falcons",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "baltimore colts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "baltimore ravens",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boston patriots",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "buffalo bills",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "carolina panthers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chicago bears",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cincinnati bengals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cleveland browns",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dallas cowboys",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dallas texans",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "denver broncos",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "detroit lions",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "green bay packers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "houston oilers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "houston texans",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "indianapolis colts",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "jacksonville jaguars",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kansas city chiefs",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "los angeles chargers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "los angeles raiders",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "los angeles rams",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "miami dolphins",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "minnesota vikings",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new england patriots",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new orleans saints",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new york giants",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new york jets",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new york titans",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "oakland raiders",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "philadelphia eagles",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "phoenix cardinals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pittsburgh steelers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san diego chargers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san francisco 49ers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "seattle seahawks",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "st. louis cardinals",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "st. louis rams",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tampa bay buccaneers",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tennessee titans",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "washington redskins",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vuitton cup",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "valencia",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "boat race",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "yacht race",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "windsurf",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "outboard",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "canoeing",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rafting",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kayak",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "yacht club",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scottish premier league",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "barclays premiership",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "carling cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scottish league cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "club deportivo chivas usa",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "league champion",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fa cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lg cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fc dallas",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "houston dynamo",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kansas city wizards",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "los angeles galaxy",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new england revolution",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "new york red bulls",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "portuguese premier league",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "real salt lake",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "san jose earthquakes",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spanish primera liga",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scottish cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "celtic cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "african nations cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "australian open",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "davis cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "federation cup",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "french open",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wimbledon",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "champions tour",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf course",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf club",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf ball",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf play",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf swing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf score",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf news",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golfer",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golfing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "european tour",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nationwide tour",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "u.s. open",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "u.s. senior open",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "youth clinics",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nhra",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "irl",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "iroc",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wrc",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "drag racing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "horse racing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "car racing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "auto racing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "motorcycle racing",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "formula 1",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "indy car",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nascar",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "olympic games",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "olympic team",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "olympic",
+    "score": 15,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/translation.json b/res/phraselists-pretty/translation.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/translation.json
@@ -0,0 +1,386 @@
+[
+  {
+    "phrase": "translate",
+    "score": 30,
+    "forest": [
+      {
+        "phrase": "web page",
+        "score": 40,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "translation service",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "text translator",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "translate text",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "instantly translates",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free translation",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "web translator",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "translation engine",
+    "score": 150,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "surf and translate",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "translation direction",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "machine translation",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "babel fish",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "babelfish",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "freetranslation",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "worldlingo",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "foreignword.com",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beolingus",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "foxlingo",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tranexp.com",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "betranslated",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "systran",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "intertran",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "imtranslator.com",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "linguamatix",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "lingvo",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "online-translator",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "opentrad.org",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "translendium",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "apertium",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "appliedlanguage.com",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "langenberg",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "click2translate",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to spanish",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "spanish to english",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to german",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to russian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to japanese",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to chinese",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to korean",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to greek",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to italian",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to dutch",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "english to portuguese",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "japanese to english",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "russian to english",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "chinese to english",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "korean to english",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "german to english",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "traduction",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "traducteur",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "traduire",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "translatica",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "translendium",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "traductor",
+    "score": 50,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/travel.json b/res/phraselists-pretty/travel.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/travel.json
@@ -0,0 +1,618 @@
+[
+  {
+    "phrase": "alpine resort",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "golf resort",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "great resort",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "dream resort",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "luxury resort",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "island resort",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "honeymoon suite",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bed & breakfast",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bed and breakfast",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "b&b",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "guest house",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "room service",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "travel agen",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "travel guid",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "travel wire",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "travel book",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "travelogue",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "popular attraction",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "popular destination",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "destination guide",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "best destination",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vacation info",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vacation spot",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vacation guide",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vacation getaway",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vacation package",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "leisure",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "touris",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "touring",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tour operat",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tour guide",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "things to do",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "plan your trip",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "plan your vacation",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "recreation",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "island playground",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "private island",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "islands for sale",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "island for sale",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "attractions",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "accomodations",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ecotour",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sightsee",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "scenic spot",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nature show",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "national park",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "park service",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "park info",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "vistor info",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "park pass",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "national forest",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "national monument",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "african safari",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hunting safari",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "photo safari",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "african safari",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "baja",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "historic village",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "walt disney",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "epcot",
+    "score": 105,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "six flags",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "roller coast",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amusement park",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marine world",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thrill ride",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "family ride",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "live show",
+    "score": 60,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "theme park",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "waterpark",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "water park",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "water slide",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "daring adventur",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "amusement park",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "adventure park",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wild adventure",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wild fun",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thrill park",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "miniature golf",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cruise vacation",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "family cruise",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "river cruise",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "passage cruise",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "restaurant cruise",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "holiday cruise",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cruise rout",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cruise ship",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cruise line",
+    "score": 55,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "expedition cruis",
+    "score": 55,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/upstream-filter.json b/res/phraselists-pretty/upstream-filter.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/upstream-filter.json
@@ -0,0 +1,37 @@
+[
+  {
+    "phrase": "Adult site blocked",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "is not allowed on this network",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "This service is powered by OpenDNS with data from St. Bernard's iGuard",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "This site was categorized as",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "block.opendns.com",
+    "score": 100,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/violence.json b/res/phraselists-pretty/violence.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/violence.json
@@ -0,0 +1,170 @@
+[
+  {
+    "phrase": "bloodbath",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blutbad",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "carnage",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "catfight",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "catfights",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cockfight",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cockfighting",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cockfights",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gemordet",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "killed",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "killer",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "killing",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "massacre",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "massacrer",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "murder",
+    "score": 35,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "murdered",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rape",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "retaliation",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "revanche",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slaughter",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "slaughtered",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "steit",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "torture",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tortured",
+    "score": 25,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/warez-hacking.json b/res/phraselists-pretty/warez-hacking.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/warez-hacking.json
@@ -0,0 +1,155 @@
+[
+  {
+    "phrase": "cracking",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "got warez?",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "hacking",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "serials 2000",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "warez",
+    "score": 10,
+    "forest": [
+      {
+        "phrase": "appz",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "crack",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "download",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "free",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "ftp",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "gamez",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "hacks",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "hackz",
+        "score": 20,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "illegal",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "patch",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "pirate",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "serial number",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "serials",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "serialz",
+        "score": 10,
+        "forest": [
+
+        ]
+      },
+      {
+        "phrase": "underground",
+        "score": 10,
+        "forest": [
+
+        ]
+      }
+    ]
+  },
+  {
+    "phrase": "warez king",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "warez monkey",
+    "score": 10,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/weapons.json b/res/phraselists-pretty/weapons.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/weapons.json
@@ -0,0 +1,912 @@
+[
+  {
+    "phrase": "22lr",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "357mag",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "38spl",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "45acp",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "advocate",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "advocates",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ak 47",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ak47",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ammo",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ammunition",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ar15",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "armalite",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "armory",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "artillery",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "beltfed",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "belt fed",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "benelli",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "black powder",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blackpowder",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "blueing",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bluing",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bolt action",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bomb building",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bren ten",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bullet",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "bullets",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "caliber",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "calibers",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "carbine",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "centerfire",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "checkering",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "control",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cruise missile",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "cruise missiles",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "diskettbomb",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "firearm",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "firearms",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "firing pin",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flintlock",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "flintlocks",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "garotte",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "garrote",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "glock",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gun",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gun making",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gun powder",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gunpowder",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gun range",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gunrange",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "guns",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gunshop",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gunsmith",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gunsmithing",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "handgun",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "handguns",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "handloading",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "heckler kock",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "kahr",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knife",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "knives",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "m16",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mac10",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "machine gun",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "machinegun",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "machineguns",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "machine guns",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "marksmanship",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mauser",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mossberg",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "muzzleloader",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "muzzleloading",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "nra",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ordnance",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "parkerize",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "parkerizing",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pistol",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pistols",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "pistolsmith",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "radarjamming",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "recoil buffer",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "recoil buffers",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "revolver",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "revolvers",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rifle",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rifles",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rifling",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "rimfire",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "ruger",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "saiga",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "schrotflinte",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "semiauto",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "semi automatic",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "semiautomatic",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shooters",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shooting",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shootist",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shotgun",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shotguns",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "shuriken",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sidearm",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sidearms",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sigarms",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "smith wesson",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sniper",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sniping",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "speedloader",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "steyr",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sub machinegun",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "submachinegun",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sub machineguns",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "submachineguns",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "sword",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "swords",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tactical",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "tec9",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "terroristhandbook",
+    "score": 70,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "terrorists handbook",
+    "score": 50,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "uzi",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "wadcutter",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "walther",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "weapon",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "weapons",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "winchester",
+    "score": 10,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "fertilizer bomb",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "triiodide",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "solidox",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "thermite",
+    "score": 15,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "molitoff cocktail",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "molitov cocktail",
+    "score": 25,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "molotov cocktail",
+    "score": 25,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-pretty/webmail.json b/res/phraselists-pretty/webmail.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-pretty/webmail.json
@@ -0,0 +1,93 @@
+[
+  {
+    "phrase": "webmail",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "inbox",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "mailbox",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free email",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "free webmail",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "by the squirrelmail development team",
+    "score": 100,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "gmail",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Sign in to Gmail",
+    "score": 75,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Search, don't sort",
+    "score": 20,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "Welcome to Gmail",
+    "score": 40,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "for you to use Gmail",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "welcome to imp",
+    "score": 30,
+    "forest": [
+
+    ]
+  },
+  {
+    "phrase": "internet messaging program",
+    "score": 20,
+    "forest": [
+
+    ]
+  }
+]
diff --git a/res/phraselists-ugly/domains-for-sale.json b/res/phraselists-ugly/domains-for-sale.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-ugly/domains-for-sale.json
@@ -0,0 +1,1 @@
+[{"phrase":"search our catalogue for more domains","score":50,"forest":[]},{"phrase":"this domain may be for sale by its owner","score":50,"forest":[]},{"phrase":"this website is for sale","score":50,"forest":[]},{"phrase":"domain names for sale","score":50,"forest":[]},{"phrase":"buy domains","score":50,"forest":[]},{"phrase":"domain parking","score":50,"forest":[]},{"phrase":"domain auction","score":50,"forest":[]},{"phrase":"parking_form","score":50,"forest":[]},{"phrase":"fabulousdomains","score":50,"forest":[]},{"phrase":"sedo","score":50,"forest":[]},{"phrase":"sedolinks","score":50,"forest":[]},{"phrase":"this web page is parked","score":150,"forest":[]},{"phrase":"buydomains.com","score":100,"forest":[]},{"phrase":"fabulousdomains.com","score":50,"forest":[]},{"phrase":"sedo.com","score":50,"forest":[]},{"phrase":"sedoparking.com","score":50,"forest":[]}]
diff --git a/res/phraselists-ugly/travel.json b/res/phraselists-ugly/travel.json
new file mode 100644
--- /dev/null
+++ b/res/phraselists-ugly/travel.json
@@ -0,0 +1,1 @@
+[{"phrase":"alpine resort","score":35,"forest":[]},{"phrase":"golf resort","score":35,"forest":[]},{"phrase":"great resort","score":35,"forest":[]},{"phrase":"dream resort","score":35,"forest":[]},{"phrase":"luxury resort","score":35,"forest":[]},{"phrase":"island resort","score":35,"forest":[]},{"phrase":"honeymoon suite","score":35,"forest":[]},{"phrase":"bed & breakfast","score":35,"forest":[]},{"phrase":"bed and breakfast","score":35,"forest":[]},{"phrase":"b&b","score":35,"forest":[]},{"phrase":"guest house","score":35,"forest":[]},{"phrase":"room service","score":35,"forest":[]},{"phrase":"travel agen","score":30,"forest":[]},{"phrase":"travel guid","score":30,"forest":[]},{"phrase":"travel wire","score":30,"forest":[]},{"phrase":"travel book","score":30,"forest":[]},{"phrase":"travelogue","score":30,"forest":[]},{"phrase":"popular attraction","score":40,"forest":[]},{"phrase":"popular destination","score":40,"forest":[]},{"phrase":"destination guide","score":30,"forest":[]},{"phrase":"best destination","score":30,"forest":[]},{"phrase":"vacation info","score":30,"forest":[]},{"phrase":"vacation spot","score":30,"forest":[]},{"phrase":"vacation guide","score":30,"forest":[]},{"phrase":"vacation getaway","score":30,"forest":[]},{"phrase":"vacation package","score":30,"forest":[]},{"phrase":"leisure","score":20,"forest":[]},{"phrase":"touris","score":30,"forest":[]},{"phrase":"touring","score":30,"forest":[]},{"phrase":"tour operat","score":30,"forest":[]},{"phrase":"tour guide","score":30,"forest":[]},{"phrase":"things to do","score":30,"forest":[]},{"phrase":"plan your trip","score":30,"forest":[]},{"phrase":"plan your vacation","score":30,"forest":[]},{"phrase":"recreation","score":30,"forest":[]},{"phrase":"island playground","score":55,"forest":[]},{"phrase":"private island","score":55,"forest":[]},{"phrase":"islands for sale","score":55,"forest":[]},{"phrase":"island for sale","score":55,"forest":[]},{"phrase":"attractions","score":25,"forest":[]},{"phrase":"accomodations","score":25,"forest":[]},{"phrase":"ecotour","score":55,"forest":[]},{"phrase":"sightsee","score":55,"forest":[]},{"phrase":"scenic spot","score":30,"forest":[]},{"phrase":"nature show","score":40,"forest":[]},{"phrase":"national park","score":40,"forest":[]},{"phrase":"park service","score":40,"forest":[]},{"phrase":"park info","score":40,"forest":[]},{"phrase":"vistor info","score":40,"forest":[]},{"phrase":"park pass","score":40,"forest":[]},{"phrase":"national forest","score":40,"forest":[]},{"phrase":"national monument","score":40,"forest":[]},{"phrase":"african safari","score":55,"forest":[]},{"phrase":"hunting safari","score":55,"forest":[]},{"phrase":"photo safari","score":55,"forest":[]},{"phrase":"african safari","score":55,"forest":[]},{"phrase":"baja","score":40,"forest":[]},{"phrase":"historic village","score":40,"forest":[]},{"phrase":"walt disney","score":55,"forest":[]},{"phrase":"epcot","score":105,"forest":[]},{"phrase":"six flags","score":55,"forest":[]},{"phrase":"roller coast","score":55,"forest":[]},{"phrase":"amusement park","score":55,"forest":[]},{"phrase":"marine world","score":55,"forest":[]},{"phrase":"thrill ride","score":55,"forest":[]},{"phrase":"family ride","score":55,"forest":[]},{"phrase":"live show","score":60,"forest":[]},{"phrase":"theme park","score":55,"forest":[]},{"phrase":"waterpark","score":55,"forest":[]},{"phrase":"water park","score":55,"forest":[]},{"phrase":"water slide","score":55,"forest":[]},{"phrase":"daring adventur","score":55,"forest":[]},{"phrase":"amusement park","score":55,"forest":[]},{"phrase":"adventure park","score":55,"forest":[]},{"phrase":"wild adventure","score":55,"forest":[]},{"phrase":"wild fun","score":55,"forest":[]},{"phrase":"thrill park","score":55,"forest":[]},{"phrase":"miniature golf","score":55,"forest":[]},{"phrase":"cruise vacation","score":55,"forest":[]},{"phrase":"family cruise","score":55,"forest":[]},{"phrase":"river cruise","score":55,"forest":[]},{"phrase":"passage cruise","score":55,"forest":[]},{"phrase":"restaurant cruise","score":55,"forest":[]},{"phrase":"holiday cruise","score":55,"forest":[]},{"phrase":"cruise rout","score":55,"forest":[]},{"phrase":"cruise ship","score":55,"forest":[]},{"phrase":"cruise line","score":55,"forest":[]},{"phrase":"expedition cruis","score":55,"forest":[]}]
diff --git a/src/client/Main.lhs b/src/client/Main.lhs
new file mode 100644
--- /dev/null
+++ b/src/client/Main.lhs
@@ -0,0 +1,78 @@
+|This is the main module for the eros client. This is not the meat &
+potatoes of the program, but this is the bread & butter.
+
+> module Main where
+
+
+So, here are our imports. I would like to only have IO inputs, however
+the import of 'Data.Aeson' is needed in order to keep the
+'Erosc.Processor' module pure.
+
+Essentially, I was faced with either making this module be tainted by
+purity, or have the other module be pure.
+
+My qualified imports are a bit obnoxious. Even though they aren't
+needed, I find that using qualified names makes the code a bit less
+confusing. That is, @LzByte.hGetContents@ is a lot more informative
+than just @hGetContents@.
+
+> import           Data.Aeson             as Aeson
+> import qualified Data.ByteString.Lazy   as LzByte
+> import           Erosc.Processor        as Erosc
+> import qualified System.IO              as StdIO
+
+
+|Eventually, I'll need this data type when I use command line
+arguments. For the moment, it's just a dummy type. So, enjoy it.
+
+> data EroscOpts = EroscOpts
+
+|So, this is the main function. Whoop de doo.  It sends the contents
+of 'StdIO.stdin' to runBtStr.
+
+Eventually, I'll add in command line argument parsing, and then we'll
+have a use for the 'EroscOptions' type.
+
+> main :: IO ()
+> main = runBtStr =<< LzByte.hGetContents StdIO.stdin
+
+|This function takes the input (presumably 'StdIO.stdin'), and tries
+to decode it.
+
+If it successfully decodes the input into the 'Erosc.Input' type,
+it sends the newfound decoded input to 'runInput', which sends it to
+the processor.
+
+If it can't, the program will throw a tantrum and shit itself.
+
+> runBtStr :: LzByte.ByteString -> IO ()
+> runBtStr inputBt = do
+>   let eitherJson = (Aeson.eitherDecode inputBt) :: Either String Erosc.Input
+>   case eitherJson of
+>     Left msg      -> fail msg
+>     Right ecInput -> runInput ecInput
+
+
+There is an astonishing quantity of bureaucracy in this program. You
+have to go through like 5 functions before you get to a function that
+actually does something useful.
+
+|Okay, so, we're getting closer to the part of the program that
+actually does stuff (or further away, depending on the location from
+whence you come).
+
+'runInput' takes the 'Erosc.Input' object (I do hate that word), and
+sends it to some function in 'Erosc' that actually mutates the
+data. Well, it doesn't mutate it, obviously, because this is Haskell,
+but you get the idea.
+
+@result@ needs to be '(<-)'d because 'Erosc.processInput' needs to
+read the phraselist JSON file. This is a result of poor library design
+on my part. I will fix this in a future release.
+
+> runInput :: Erosc.Input -> IO ()
+> runInput ipt = do
+>   result <- Erosc.processInput ipt
+>   let jsonText = Erosc.encode result
+>   LzByte.hPutStr StdIO.stdout jsonText
+
diff --git a/src/erosc/Main.lhs b/src/erosc/Main.lhs
deleted file mode 100644
--- a/src/erosc/Main.lhs
+++ /dev/null
@@ -1,78 +0,0 @@
-|This is the main module for the eros client. This is not the meat &
-potatoes of the program, but this is the bread & butter.
-
-> module Main where
-
-
-So, here are our imports. I would like to only have IO inputs, however
-the import of 'Data.Aeson' is needed in order to keep the
-'Erosc.Processor' module pure.
-
-Essentially, I was faced with either making this module be tainted by
-purity, or have the other module be pure.
-
-My qualified imports are a bit obnoxious. Even though they aren't
-needed, I find that using qualified names makes the code a bit less
-confusing. That is, @LzByte.hGetContents@ is a lot more informative
-than just @hGetContents@.
-
-> import           Data.Aeson             as Aeson
-> import qualified Data.ByteString.Lazy   as LzByte
-> import           Erosc.Processor        as Erosc
-> import qualified System.IO              as StdIO
-
-
-|Eventually, I'll need this data type when I use command line
-arguments. For the moment, it's just a dummy type. So, enjoy it.
-
-> data EroscOpts = EroscOpts
-
-|So, this is the main function. Whoop de doo.  It sends the contents
-of 'StdIO.stdin' to runBtStr.
-
-Eventually, I'll add in command line argument parsing, and then we'll
-have a use for the 'EroscOptions' type.
-
-> main :: IO ()
-> main = runBtStr =<< LzByte.hGetContents StdIO.stdin
-
-|This function takes the input (presumably 'StdIO.stdin'), and tries
-to decode it.
-
-If it successfully decodes the input into the 'Erosc.Input' type,
-it sends the newfound decoded input to 'runInput', which sends it to
-the processor.
-
-If it can't, the program will throw a tantrum and shit itself.
-
-> runBtStr :: LzByte.ByteString -> IO ()
-> runBtStr inputBt = do
->   let eitherJson = (Aeson.eitherDecode inputBt) :: Either String Erosc.Input
->   case eitherJson of
->     Left msg      -> fail msg
->     Right ecInput -> runInput ecInput
-
-
-There is an astonishing quantity of bureaucracy in this program. You
-have to go through like 5 functions before you get to a function that
-actually does something useful.
-
-|Okay, so, we're getting closer to the part of the program that
-actually does stuff (or further away, depending on the location from
-whence you come).
-
-'runInput' takes the 'Erosc.Input' object (I do hate that word), and
-sends it to some function in 'Erosc' that actually mutates the
-data. Well, it doesn't mutate it, obviously, because this is Haskell,
-but you get the idea.
-
-@result@ needs to be '(<-)'d because 'Erosc.processInput' needs to
-read the phraselist JSON file. This is a result of poor library design
-on my part. I will fix this in a future release.
-
-> runInput :: Erosc.Input -> IO ()
-> runInput ipt = do
->   result <- Erosc.processInput ipt
->   let jsonText = Erosc.encode result
->   LzByte.hPutStr StdIO.stdout jsonText
-
diff --git a/src/lib/Text/Eros/Message.hs b/src/lib/Text/Eros/Message.hs
deleted file mode 100644
--- a/src/lib/Text/Eros/Message.hs
+++ /dev/null
@@ -1,61 +0,0 @@
--- |
--- Module       : Text.Eros.Message
--- Description  : Module for censoring pieces of text.
--- Copyright    : 2014, Peter Harpending
--- License      : BSD3
--- Maintainer   : Peter Harpending <pharpend2@gmail.com>
--- Stability    : experimental
--- Portability  : archlinux
-
--- This module deals specifically with pieces of 'Text'.
-
-module Text.Eros.Message (messageScore) where
-
--- Here, we have all the imports.
-import           Data.List
-import qualified Data.Map.Strict as M
-import qualified Data.Text.Lazy as L
-import           Data.Tree
-import           Text.Eros.Phrase
-import           Text.Eros.Phraselist
-
-
--- |I can never remember what I named things, so here are a bunch of
--- type synonyms.
-type BadWord     = L.Text
-type Message     = L.Text
-type MessagePart = L.Text
-type Restof      = L.Text
-type RestOf      = L.Text
-type Word        = L.Text
-type Score       = Int
-
--- |Does a top-level split of a 'Message'. Returns a list of pairs,
--- with the first element being the score up to that point in the
--- message, as well as the rest of the message. That gives you
--- somewhat of an idea how it works, but that's not quite it
-messageSplit :: Message -> PhraseMap -> [(Score, RestOf)]
-messageSplit initialText sayingsMap = concat $ filter (/= [])
-                                             $ nub
-                                             $ map breakSaying potentialSayings
-  where
-    potentialSayings      = M.keys sayingsMap
-    breakSaying saying    = map (trimSaying saying . snd) $ broked saying
-    trimSaying saying txt = (sayScore saying, L.strip $ L.drop (L.length saying) txt)
-    sayScore saying       = case maybeScore saying of
-                              Just score -> score
-                              Nothing    -> 0
-    maybeScore saying     = fmap score $ fmap rootLabel $ M.lookup saying sayingsMap
-    broked saying         = L.breakOnAll saying lowerText -- looks like [("go ", "fuck yourself ")]
-    lowerText             = L.toLower initialText         -- looks like "go fuck yourself" (compared to "gO fUcK yOURSelf")
-    trimPair (a, b)       = (L.strip a, L.strip b)        -- looks like ("go", "fuck yourself")
-
--- |Given a message, find its score.
-messageScore :: Message -> PhraseMap -> Score
-messageScore msg pmap
-  | L.empty == msg = 0
-  | otherwise      = (sum topScores) + (sum lowerScores)
-      where
-        msgSplit    = messageSplit msg pmap
-        topScores   = map fst msgSplit
-        lowerScores = map (\m -> messageScore m pmap) $ map snd msgSplit
diff --git a/src/lib/Text/Eros/Phrase.hs b/src/lib/Text/Eros/Phrase.hs
deleted file mode 100644
--- a/src/lib/Text/Eros/Phrase.hs
+++ /dev/null
@@ -1,57 +0,0 @@
--- |
--- Module       : Text.Eros.Phrase
--- Description  : Pure interface for 'Phrase's and 'PhraseTree's.
--- Copyright    : 2014, Peter Harpending.
--- License      : BSD3
--- Maintainer   : Peter Harpending <pharpend2@gmail.com>
--- Stability    : experimental
--- Portability  : archlinux
--- 
-
-module Text.Eros.Phrase where
-
-import qualified Data.Map as M
-import           Data.Ord (comparing)
-import           Data.Text.Lazy (Text)
-import           Data.Tree
-
--- |A Phrase is a piece of Text, with an int representing its
--- weight. These are the used internally within 'eros', in
--- 'Tree's. 
-data Phrase = Phrase { phrase :: Text
-                     , score  :: Int
-                     }
-  deriving (Read, Show)
-
-instance Eq Phrase where
-  a == b = (score a) == (score b)
-  a /= b = (score a) /= (score b)
-
-instance Ord Phrase where
-  -- |To compare 'Phrases', just compare their 'score's
-  compare = comparing score
-
--- |A 'Tree' of 'Phrase's
-type PhraseTree = Tree Phrase
--- |A 'Forest' of 'Phrase's
-type PhraseForest = Forest Phrase
--- |A Map of text values the appropriate tree
-type PhraseMap = M.Map Text PhraseTree
-
--- |The 'score' of the 'PhraseTree' is the sum of the 'score's of its 'Node's.
-treeScore :: PhraseTree -> Int
-treeScore = sum . map score . flatten
-
--- |Given a list of 'PhraseTree's, return the top-level 'phrase's.
-forestPhrases :: [PhraseTree] -> [Text]
-forestPhrases = map forestPhrase
-
--- |Given a 'PhraseTree', return the top-level 'phrase'.
-forestPhrase :: PhraseTree -> Text
-forestPhrase (Node phr subf) = phrase phr
-
--- |Given a list of 'PhraseTree's, return a map of each phrase with
--- the appropriate tree.
-mkMap :: PhraseForest -> PhraseMap
-mkMap = M.fromList . phraseTreeAlist
-  where phraseTreeAlist frs = zip (forestPhrases frs) frs
diff --git a/src/lib/Text/Eros/Phraselist.hs b/src/lib/Text/Eros/Phraselist.hs
deleted file mode 100644
--- a/src/lib/Text/Eros/Phraselist.hs
+++ /dev/null
@@ -1,330 +0,0 @@
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RankNTypes #-}
-
--- |
--- Module       : Text.Eros.Phraselist
--- Description  : A module for dealing with Phraselists.
--- Copyright    : 2014, Peter Harpending.
--- License      : BSD3
--- Maintainer   : Peter Harpending <pharpend2@gmail.com>
--- Stability    : experimental
--- Portability  : archlinux
---
--- If you want to make your own phraselist, you need to write a JSON
--- file, in accordance with the
--- <https://raw.githubusercontent.com/pharpend/eros/master/res/phraselist-schema.json schema>.
--- Once you do that, make a data type for your phraselist.
--- Make your data type an instance of 'Phraselist', and you're good to
--- go.
--- 
--- For example, let's say your phraselist is @mylist.json@, and it's
--- all in accordance with the schema. Your code would look something
--- like this:
--- 
--- @
--- data MyList = MyList
--- 
--- instance Phraselist MyList where
---   phraselistPath MyList = getDataFileName "mylist.json"
---   phraselistPath _      = undefined
--- @
--- 
--- Don't forget to add @mylist.json@ to @Data-Files@ in your @.cabal@
--- file.
--- 
--- If you want to use one of the lists we already supply
--- 
-
-module Text.Eros.Phraselist where
-
-import           Control.Applicative  ((<$>), (<*>))
-import           Control.Monad        (mzero, sequence)
-import           Data.Aeson
-import qualified Data.ByteString.Lazy as B
-import qualified Data.Map             as M
-import           Data.Text.Lazy       (Text)
-import qualified Data.Text.Lazy       as L
-import           Data.Tree
-import           Paths_eros
-import           System.Exit
-import           Text.Eros.Phrase
-
-class Phraselist t where
-  phraselistPath :: t -> IO FilePath
-
--- |A set of 'Phraselist's. Note that this is actually a list, and I'm
--- calling it a "set" for purely lexical purposes.
-type PhraselistSet = Phraselist t => [t]
-
--- |The phraselists in @res/@. Each of these constructors correspond
--- to one of the files
--- <https://github.com/pharpend/eros/tree/master/res/phraselists-pretty here>.
--- 
--- Gitlab has a terrible interface, so I won't provide links to each
--- one of them.
-data ErosList = Chat
-              | Conspiracy
-              | DrugAdvocacy
-              | Forums
-              | Gambling
-              | Games
-              | Gore
-              | IdTheft
-              | IllegalDrugs
-              | Intolerance
-              | LegalDrugs
-              | Malware
-              | Music
-              | News
-              | Nudism
-              | Peer2Peer
-              | Personals
-              | Pornography
-              | Proxies
-              | SecretSocieties
-              | SelfLabeling
-              | Sport
-              | Translation
-              | UpstreamFilter
-              | Violence
-              | WarezHacking
-              | Weapons
-              | Webmail
-
-instance Eq ErosList where
-  (==) Chat Chat = True
-  (==) Conspiracy Conspiracy = True
-  (==) DrugAdvocacy DrugAdvocacy = True
-  (==) Forums Forums = True
-  (==) Gambling Gambling = True
-  (==) Games Games = True
-  (==) Gore Gore = True
-  (==) IdTheft IdTheft = True
-  (==) IllegalDrugs IllegalDrugs = True
-  (==) Intolerance Intolerance = True
-  (==) LegalDrugs LegalDrugs = True
-  (==) Malware Malware = True
-  (==) Music Music = True
-  (==) News News = True
-  (==) Nudism Nudism = True
-  (==) Peer2Peer Peer2Peer = True
-  (==) Personals Personals = True
-  (==) Pornography Pornography = True
-  (==) Proxies Proxies = True
-  (==) SecretSocieties SecretSocieties = True
-  (==) SelfLabeling SelfLabeling = True
-  (==) Sport Sport = True
-  (==) Translation Translation = True
-  (==) UpstreamFilter UpstreamFilter = True
-  (==) Violence Violence = True
-  (==) WarezHacking WarezHacking = True
-  (==) Weapons Weapons = True
-  (==) Webmail Webmail = True
-  (==) Chat _ = False
-  (==) Conspiracy _ = False
-  (==) DrugAdvocacy _ = False
-  (==) Forums _ = False
-  (==) Gambling _ = False
-  (==) Games _ = False
-  (==) Gore _ = False
-  (==) IdTheft _ = False
-  (==) IllegalDrugs _ = False
-  (==) Intolerance _ = False
-  (==) LegalDrugs _ = False
-  (==) Malware _ = False
-  (==) Music _ = False
-  (==) News _ = False
-  (==) Nudism _ = False
-  (==) Peer2Peer _ = False
-  (==) Personals _ = False
-  (==) Pornography _ = False
-  (==) Proxies _ = False
-  (==) SecretSocieties _ = False
-  (==) SelfLabeling _ = False
-  (==) Sport _ = False
-  (==) Translation _ = False
-  (==) UpstreamFilter _ = False
-  (==) Violence _ = False
-  (==) WarezHacking _ = False
-  (==) Weapons _ = False
-  (==) Webmail _ = False
-
--- |A list of phraselists we provide.
-erosLists :: [ErosList]
-erosLists = [ Chat
-            , Conspiracy
-            , DrugAdvocacy
-            , Forums
-            , Gambling
-            , Games
-            , Gore
-            , IdTheft
-            , IllegalDrugs
-            , Intolerance
-            , LegalDrugs
-            , Malware
-            , Music
-            , News
-            , Nudism
-            , Peer2Peer
-            , Personals
-            , Pornography
-            , Proxies
-            , SecretSocieties
-            , SelfLabeling
-            , Sport
-            , Translation
-            , UpstreamFilter
-            , Violence
-            , WarezHacking
-            , Weapons
-            , Webmail
-            ]
-
--- |A list of the paths to the phraselists we provide.
-erosListPaths :: IO [FilePath]
-erosListPaths = mapM phraselistPath erosLists
-
-erosListNames :: [L.Text]
-erosListNames = [ "chat"
-                , "conspiracy"
-                , "drug-advocacy"
-                , "forums"
-                , "gambling"
-                , "games"
-                , "gore"
-                , "id-theft"
-                , "illegal-drugs"
-                , "intolerance"
-                , "legal-drugs"
-                , "malware"
-                , "music"
-                , "news"
-                , "nudism"
-                , "peer2peer"
-                , "personals"
-                , "pornography"
-                , "proxies"
-                , "secret-societies"
-                , "self-labeling"
-                , "sport"
-                , "translation"
-                , "upstream-filter"
-                , "violence"
-                , "warez-hacking"
-                , "weapons"
-                , "webmail"
-                ]
-
--- |You can't really order the lists, so we won't use 'M.Map'
-erosListNamePairs :: [(ErosList, L.Text)]
-erosListNamePairs = zip erosLists erosListNames
-
-erosNameByList :: ErosList -> Maybe L.Text
-erosNameByList key = lookup key erosListNamePairs
-
-erosNameListMap :: M.Map L.Text ErosList
-erosNameListMap = M.fromList $ zip erosListNames erosLists
-
-erosListByName :: L.Text -> Maybe ErosList
-erosListByName key = M.lookup key erosNameListMap 
-
--- These are the data paths for the various PhraseLists
-instance Phraselist ErosList where
-  phraselistPath Chat            = getDataFileName "res/phraselists-ugly/chat.json"
-  phraselistPath Conspiracy      = getDataFileName "res/phraselists-ugly/conspiracy.json"
-  phraselistPath DrugAdvocacy    = getDataFileName "res/phraselists-ugly/drug-advocacy.json"
-  phraselistPath Forums          = getDataFileName "res/phraselists-ugly/forums.json"
-  phraselistPath Gambling        = getDataFileName "res/phraselists-ugly/gambling.json"
-  phraselistPath Games           = getDataFileName "res/phraselists-ugly/games.json"
-  phraselistPath Gore            = getDataFileName "res/phraselists-ugly/gore.json"
-  phraselistPath IdTheft         = getDataFileName "res/phraselists-ugly/id-theft.json"
-  phraselistPath IllegalDrugs    = getDataFileName "res/phraselists-ugly/illegal-drugs.json"
-  phraselistPath Intolerance     = getDataFileName "res/phraselists-ugly/intolerance.json"
-  phraselistPath LegalDrugs      = getDataFileName "res/phraselists-ugly/legal-drugs.json"
-  phraselistPath Malware         = getDataFileName "res/phraselists-ugly/malware.json"
-  phraselistPath Music           = getDataFileName "res/phraselists-ugly/music.json"
-  phraselistPath News            = getDataFileName "res/phraselists-ugly/news.json"
-  phraselistPath Nudism          = getDataFileName "res/phraselists-ugly/nudism.json"
-  phraselistPath Peer2Peer       = getDataFileName "res/phraselists-ugly/peer2peer.json"
-  phraselistPath Personals       = getDataFileName "res/phraselists-ugly/personals.json"
-  phraselistPath Pornography     = getDataFileName "res/phraselists-ugly/pornography.json"
-  phraselistPath Proxies         = getDataFileName "res/phraselists-ugly/proxies.json"
-  phraselistPath SecretSocieties = getDataFileName "res/phraselists-ugly/secret-societies.json"
-  phraselistPath SelfLabeling    = getDataFileName "res/phraselists-ugly/self-labeling.json"
-  phraselistPath Sport           = getDataFileName "res/phraselists-ugly/sport.json"
-  phraselistPath Translation     = getDataFileName "res/phraselists-ugly/translation.json"
-  phraselistPath UpstreamFilter  = getDataFileName "res/phraselists-ugly/upstream-filter.json"
-  phraselistPath Violence        = getDataFileName "res/phraselists-ugly/violence.json"
-  phraselistPath WarezHacking    = getDataFileName "res/phraselists-ugly/warez-hacking.json"
-  phraselistPath Weapons         = getDataFileName "res/phraselists-ugly/weapons.json"
-  phraselistPath Webmail         = getDataFileName "res/phraselists-ugly/webmail.json"
-
--- |Placeholder type used to read JSON. The JSON schema (currently, at
--- least) is such that one needs this type to read the JSON. You can
--- use 'fromPAT' to convert this type into a 'PhraseTree'
-data PhraseAlmostTree = PhraseAlmostTree { patPhrase :: Text
-                                         , patScore  :: Int
-                                         , patForest :: [PhraseAlmostTree]
-                                         }
-  deriving (Show, Read)
-
--- |Alias for 'PhraseAlmostTree'
-type PAT = PhraseAlmostTree
-
--- |You can read the
--- <https://raw.githubusercontent.com/pharpend/eros/master/res/phraselist-schema.json JSON schema>
--- to see how this works.
-instance FromJSON PAT where
-  parseJSON (Object v) = PhraseAlmostTree
-    <$> v .: "phrase"
-    <*> v .: "score"
-    <*> v .: "forest"
-  parseJSON _          = fail "Object not a PhraseAlmostTree."
-
--- |Convert a 'PAT' into a 'PhraseTree'.
-fromPAT :: PAT -> PhraseTree
-fromPAT (PhraseAlmostTree p s f) = Node (Phrase p s) $ map fromPAT f
-
--- |I figure some people like to type a lot.
-fromPhraseAlmostTree :: PAT -> PhraseTree
-fromPhraseAlmostTree = fromPAT
-
--- |Read a 'Phraselist', marshal it into a 'PhraseForest'.
-readPhraselist :: Phraselist t => t -> IO PhraseForest
-readPhraselist elist = do
-  lpath <- phraselistPath elist
-  ltext <- B.readFile lpath
-  let ljson = (eitherDecode ltext) :: Either String [PAT]
-  case ljson of
-    Left msg   -> fail msg
-    Right pats -> return $ map fromPAT pats
-
--- |Alias for 'readPhraselist'
-loadPhraselist :: Phraselist t => t -> IO PhraseForest
-loadPhraselist = readPhraselist
-
--- |Alias for 'readPhraselist'
-readPhraseFile :: Phraselist t => t -> IO PhraseForest
-readPhraseFile = readPhraselist
-
--- |Alias for 'readPhraselist'
-loadPhraseFile :: Phraselist t => t -> IO PhraseForest
-loadPhraseFile = readPhraselist
-
--- |Alias for 'readPhraselist'
-readPhraseForest :: Phraselist t => t -> IO PhraseForest
-readPhraseForest = readPhraselist
-
--- |Alias for 'readPhraselist'
-loadPhraseForest :: Phraselist t => t -> IO PhraseForest
-loadPhraseForest = readPhraselist
-
--- |Load a 'Phraselist' directly into a 'PhraseMap'
-readPhraseMap :: Phraselist t => t -> IO PhraseMap
-readPhraseMap plist = fmap mkMap $ readPhraselist plist
-
--- |Alias for 'readPhraseMap'
-loadPhraseMap :: Phraselist t => t -> IO PhraseMap
-loadPhraseMap = readPhraseMap
diff --git a/src/library/Text/Eros/Message.hs b/src/library/Text/Eros/Message.hs
new file mode 100644
--- /dev/null
+++ b/src/library/Text/Eros/Message.hs
@@ -0,0 +1,61 @@
+-- |
+-- Module       : Text.Eros.Message
+-- Description  : Module for censoring pieces of text.
+-- Copyright    : 2014, Peter Harpending
+-- License      : BSD3
+-- Maintainer   : Peter Harpending <pharpend2@gmail.com>
+-- Stability    : experimental
+-- Portability  : archlinux
+
+-- This module deals specifically with pieces of 'Text'.
+
+module Text.Eros.Message (messageScore) where
+
+-- Here, we have all the imports.
+import           Data.List
+import qualified Data.Map.Strict as M
+import qualified Data.Text.Lazy as L
+import           Data.Tree
+import           Text.Eros.Phrase
+import           Text.Eros.Phraselist
+
+
+-- |I can never remember what I named things, so here are a bunch of
+-- type synonyms.
+type BadWord     = L.Text
+type Message     = L.Text
+type MessagePart = L.Text
+type Restof      = L.Text
+type RestOf      = L.Text
+type Word        = L.Text
+type Score       = Int
+
+-- |Does a top-level split of a 'Message'. Returns a list of pairs,
+-- with the first element being the score up to that point in the
+-- message, as well as the rest of the message. That gives you
+-- somewhat of an idea how it works, but that's not quite it
+messageSplit :: Message -> PhraseMap -> [(Score, RestOf)]
+messageSplit initialText sayingsMap = concat $ filter (/= [])
+                                             $ nub
+                                             $ map breakSaying potentialSayings
+  where
+    potentialSayings      = M.keys sayingsMap
+    breakSaying saying    = map (trimSaying saying . snd) $ broked saying
+    trimSaying saying txt = (sayScore saying, L.strip $ L.drop (L.length saying) txt)
+    sayScore saying       = case maybeScore saying of
+                              Just score -> score
+                              Nothing    -> 0
+    maybeScore saying     = fmap score $ fmap rootLabel $ M.lookup saying sayingsMap
+    broked saying         = L.breakOnAll saying lowerText -- looks like [("go ", "fuck yourself ")]
+    lowerText             = L.toLower initialText         -- looks like "go fuck yourself" (compared to "gO fUcK yOURSelf")
+    trimPair (a, b)       = (L.strip a, L.strip b)        -- looks like ("go", "fuck yourself")
+
+-- |Given a message, find its score.
+messageScore :: Message -> PhraseMap -> Score
+messageScore msg pmap
+  | L.empty == msg = 0
+  | otherwise      = (sum topScores) + (sum lowerScores)
+      where
+        msgSplit    = messageSplit msg pmap
+        topScores   = map fst msgSplit
+        lowerScores = map (\m -> messageScore m pmap) $ map snd msgSplit
diff --git a/src/library/Text/Eros/Phrase.hs b/src/library/Text/Eros/Phrase.hs
new file mode 100644
--- /dev/null
+++ b/src/library/Text/Eros/Phrase.hs
@@ -0,0 +1,57 @@
+-- |
+-- Module       : Text.Eros.Phrase
+-- Description  : Pure interface for 'Phrase's and 'PhraseTree's.
+-- Copyright    : 2014, Peter Harpending.
+-- License      : BSD3
+-- Maintainer   : Peter Harpending <pharpend2@gmail.com>
+-- Stability    : experimental
+-- Portability  : archlinux
+-- 
+
+module Text.Eros.Phrase where
+
+import qualified Data.Map as M
+import           Data.Ord (comparing)
+import           Data.Text.Lazy (Text)
+import           Data.Tree
+
+-- |A Phrase is a piece of Text, with an int representing its
+-- weight. These are the used internally within 'eros', in
+-- 'Tree's. 
+data Phrase = Phrase { phrase :: Text
+                     , score  :: Int
+                     }
+  deriving (Read, Show)
+
+instance Eq Phrase where
+  a == b = (score a) == (score b)
+  a /= b = (score a) /= (score b)
+
+instance Ord Phrase where
+  -- |To compare 'Phrases', just compare their 'score's
+  compare = comparing score
+
+-- |A 'Tree' of 'Phrase's
+type PhraseTree = Tree Phrase
+-- |A 'Forest' of 'Phrase's
+type PhraseForest = Forest Phrase
+-- |A Map of text values the appropriate tree
+type PhraseMap = M.Map Text PhraseTree
+
+-- |The 'score' of the 'PhraseTree' is the sum of the 'score's of its 'Node's.
+treeScore :: PhraseTree -> Int
+treeScore = sum . map score . flatten
+
+-- |Given a list of 'PhraseTree's, return the top-level 'phrase's.
+forestPhrases :: [PhraseTree] -> [Text]
+forestPhrases = map forestPhrase
+
+-- |Given a 'PhraseTree', return the top-level 'phrase'.
+forestPhrase :: PhraseTree -> Text
+forestPhrase (Node phr subf) = phrase phr
+
+-- |Given a list of 'PhraseTree's, return a map of each phrase with
+-- the appropriate tree.
+mkMap :: PhraseForest -> PhraseMap
+mkMap = M.fromList . phraseTreeAlist
+  where phraseTreeAlist frs = zip (forestPhrases frs) frs
diff --git a/src/library/Text/Eros/Phraselist.hs b/src/library/Text/Eros/Phraselist.hs
new file mode 100644
--- /dev/null
+++ b/src/library/Text/Eros/Phraselist.hs
@@ -0,0 +1,330 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
+
+-- |
+-- Module       : Text.Eros.Phraselist
+-- Description  : A module for dealing with Phraselists.
+-- Copyright    : 2014, Peter Harpending.
+-- License      : BSD3
+-- Maintainer   : Peter Harpending <pharpend2@gmail.com>
+-- Stability    : experimental
+-- Portability  : archlinux
+--
+-- If you want to make your own phraselist, you need to write a JSON
+-- file, in accordance with the
+-- <https://raw.githubusercontent.com/pharpend/eros/master/res/phraselist-schema.json schema>.
+-- Once you do that, make a data type for your phraselist.
+-- Make your data type an instance of 'Phraselist', and you're good to
+-- go.
+-- 
+-- For example, let's say your phraselist is @mylist.json@, and it's
+-- all in accordance with the schema. Your code would look something
+-- like this:
+-- 
+-- @
+-- data MyList = MyList
+-- 
+-- instance Phraselist MyList where
+--   phraselistPath MyList = getDataFileName "mylist.json"
+--   phraselistPath _      = undefined
+-- @
+-- 
+-- Don't forget to add @mylist.json@ to @Data-Files@ in your @.cabal@
+-- file.
+-- 
+-- If you want to use one of the lists we already supply
+-- 
+
+module Text.Eros.Phraselist where
+
+import           Control.Applicative  ((<$>), (<*>))
+import           Control.Monad        (mzero, sequence)
+import           Data.Aeson
+import qualified Data.ByteString.Lazy as B
+import qualified Data.Map             as M
+import           Data.Text.Lazy       (Text)
+import qualified Data.Text.Lazy       as L
+import           Data.Tree
+import           Paths_eros
+import           System.Exit
+import           Text.Eros.Phrase
+
+class Phraselist t where
+  phraselistPath :: t -> IO FilePath
+
+-- |A set of 'Phraselist's. Note that this is actually a list, and I'm
+-- calling it a "set" for purely lexical purposes.
+type PhraselistSet = Phraselist t => [t]
+
+-- |The phraselists in @res/@. Each of these constructors correspond
+-- to one of the files
+-- <https://github.com/pharpend/eros/tree/master/res/phraselists-pretty here>.
+-- 
+-- Gitlab has a terrible interface, so I won't provide links to each
+-- one of them.
+data ErosList = Chat
+              | Conspiracy
+              | DrugAdvocacy
+              | Forums
+              | Gambling
+              | Games
+              | Gore
+              | IdTheft
+              | IllegalDrugs
+              | Intolerance
+              | LegalDrugs
+              | Malware
+              | Music
+              | News
+              | Nudism
+              | Peer2Peer
+              | Personals
+              | Pornography
+              | Proxies
+              | SecretSocieties
+              | SelfLabeling
+              | Sport
+              | Translation
+              | UpstreamFilter
+              | Violence
+              | WarezHacking
+              | Weapons
+              | Webmail
+
+instance Eq ErosList where
+  (==) Chat Chat = True
+  (==) Conspiracy Conspiracy = True
+  (==) DrugAdvocacy DrugAdvocacy = True
+  (==) Forums Forums = True
+  (==) Gambling Gambling = True
+  (==) Games Games = True
+  (==) Gore Gore = True
+  (==) IdTheft IdTheft = True
+  (==) IllegalDrugs IllegalDrugs = True
+  (==) Intolerance Intolerance = True
+  (==) LegalDrugs LegalDrugs = True
+  (==) Malware Malware = True
+  (==) Music Music = True
+  (==) News News = True
+  (==) Nudism Nudism = True
+  (==) Peer2Peer Peer2Peer = True
+  (==) Personals Personals = True
+  (==) Pornography Pornography = True
+  (==) Proxies Proxies = True
+  (==) SecretSocieties SecretSocieties = True
+  (==) SelfLabeling SelfLabeling = True
+  (==) Sport Sport = True
+  (==) Translation Translation = True
+  (==) UpstreamFilter UpstreamFilter = True
+  (==) Violence Violence = True
+  (==) WarezHacking WarezHacking = True
+  (==) Weapons Weapons = True
+  (==) Webmail Webmail = True
+  (==) Chat _ = False
+  (==) Conspiracy _ = False
+  (==) DrugAdvocacy _ = False
+  (==) Forums _ = False
+  (==) Gambling _ = False
+  (==) Games _ = False
+  (==) Gore _ = False
+  (==) IdTheft _ = False
+  (==) IllegalDrugs _ = False
+  (==) Intolerance _ = False
+  (==) LegalDrugs _ = False
+  (==) Malware _ = False
+  (==) Music _ = False
+  (==) News _ = False
+  (==) Nudism _ = False
+  (==) Peer2Peer _ = False
+  (==) Personals _ = False
+  (==) Pornography _ = False
+  (==) Proxies _ = False
+  (==) SecretSocieties _ = False
+  (==) SelfLabeling _ = False
+  (==) Sport _ = False
+  (==) Translation _ = False
+  (==) UpstreamFilter _ = False
+  (==) Violence _ = False
+  (==) WarezHacking _ = False
+  (==) Weapons _ = False
+  (==) Webmail _ = False
+
+-- |A list of phraselists we provide.
+erosLists :: [ErosList]
+erosLists = [ Chat
+            , Conspiracy
+            , DrugAdvocacy
+            , Forums
+            , Gambling
+            , Games
+            , Gore
+            , IdTheft
+            , IllegalDrugs
+            , Intolerance
+            , LegalDrugs
+            , Malware
+            , Music
+            , News
+            , Nudism
+            , Peer2Peer
+            , Personals
+            , Pornography
+            , Proxies
+            , SecretSocieties
+            , SelfLabeling
+            , Sport
+            , Translation
+            , UpstreamFilter
+            , Violence
+            , WarezHacking
+            , Weapons
+            , Webmail
+            ]
+
+-- |A list of the paths to the phraselists we provide.
+erosListPaths :: IO [FilePath]
+erosListPaths = mapM phraselistPath erosLists
+
+erosListNames :: [L.Text]
+erosListNames = [ "chat"
+                , "conspiracy"
+                , "drug-advocacy"
+                , "forums"
+                , "gambling"
+                , "games"
+                , "gore"
+                , "id-theft"
+                , "illegal-drugs"
+                , "intolerance"
+                , "legal-drugs"
+                , "malware"
+                , "music"
+                , "news"
+                , "nudism"
+                , "peer2peer"
+                , "personals"
+                , "pornography"
+                , "proxies"
+                , "secret-societies"
+                , "self-labeling"
+                , "sport"
+                , "translation"
+                , "upstream-filter"
+                , "violence"
+                , "warez-hacking"
+                , "weapons"
+                , "webmail"
+                ]
+
+-- |You can't really order the lists, so we won't use 'M.Map'
+erosListNamePairs :: [(ErosList, L.Text)]
+erosListNamePairs = zip erosLists erosListNames
+
+erosNameByList :: ErosList -> Maybe L.Text
+erosNameByList key = lookup key erosListNamePairs
+
+erosNameListMap :: M.Map L.Text ErosList
+erosNameListMap = M.fromList $ zip erosListNames erosLists
+
+erosListByName :: L.Text -> Maybe ErosList
+erosListByName key = M.lookup key erosNameListMap 
+
+-- These are the data paths for the various PhraseLists
+instance Phraselist ErosList where
+  phraselistPath Chat            = getDataFileName "res/phraselists-ugly/chat.json"
+  phraselistPath Conspiracy      = getDataFileName "res/phraselists-ugly/conspiracy.json"
+  phraselistPath DrugAdvocacy    = getDataFileName "res/phraselists-ugly/drug-advocacy.json"
+  phraselistPath Forums          = getDataFileName "res/phraselists-ugly/forums.json"
+  phraselistPath Gambling        = getDataFileName "res/phraselists-ugly/gambling.json"
+  phraselistPath Games           = getDataFileName "res/phraselists-ugly/games.json"
+  phraselistPath Gore            = getDataFileName "res/phraselists-ugly/gore.json"
+  phraselistPath IdTheft         = getDataFileName "res/phraselists-ugly/id-theft.json"
+  phraselistPath IllegalDrugs    = getDataFileName "res/phraselists-ugly/illegal-drugs.json"
+  phraselistPath Intolerance     = getDataFileName "res/phraselists-ugly/intolerance.json"
+  phraselistPath LegalDrugs      = getDataFileName "res/phraselists-ugly/legal-drugs.json"
+  phraselistPath Malware         = getDataFileName "res/phraselists-ugly/malware.json"
+  phraselistPath Music           = getDataFileName "res/phraselists-ugly/music.json"
+  phraselistPath News            = getDataFileName "res/phraselists-ugly/news.json"
+  phraselistPath Nudism          = getDataFileName "res/phraselists-ugly/nudism.json"
+  phraselistPath Peer2Peer       = getDataFileName "res/phraselists-ugly/peer2peer.json"
+  phraselistPath Personals       = getDataFileName "res/phraselists-ugly/personals.json"
+  phraselistPath Pornography     = getDataFileName "res/phraselists-ugly/pornography.json"
+  phraselistPath Proxies         = getDataFileName "res/phraselists-ugly/proxies.json"
+  phraselistPath SecretSocieties = getDataFileName "res/phraselists-ugly/secret-societies.json"
+  phraselistPath SelfLabeling    = getDataFileName "res/phraselists-ugly/self-labeling.json"
+  phraselistPath Sport           = getDataFileName "res/phraselists-ugly/sport.json"
+  phraselistPath Translation     = getDataFileName "res/phraselists-ugly/translation.json"
+  phraselistPath UpstreamFilter  = getDataFileName "res/phraselists-ugly/upstream-filter.json"
+  phraselistPath Violence        = getDataFileName "res/phraselists-ugly/violence.json"
+  phraselistPath WarezHacking    = getDataFileName "res/phraselists-ugly/warez-hacking.json"
+  phraselistPath Weapons         = getDataFileName "res/phraselists-ugly/weapons.json"
+  phraselistPath Webmail         = getDataFileName "res/phraselists-ugly/webmail.json"
+
+-- |Placeholder type used to read JSON. The JSON schema (currently, at
+-- least) is such that one needs this type to read the JSON. You can
+-- use 'fromPAT' to convert this type into a 'PhraseTree'
+data PhraseAlmostTree = PhraseAlmostTree { patPhrase :: Text
+                                         , patScore  :: Int
+                                         , patForest :: [PhraseAlmostTree]
+                                         }
+  deriving (Show, Read)
+
+-- |Alias for 'PhraseAlmostTree'
+type PAT = PhraseAlmostTree
+
+-- |You can read the
+-- <https://raw.githubusercontent.com/pharpend/eros/master/res/phraselist-schema.json JSON schema>
+-- to see how this works.
+instance FromJSON PAT where
+  parseJSON (Object v) = PhraseAlmostTree
+    <$> v .: "phrase"
+    <*> v .: "score"
+    <*> v .: "forest"
+  parseJSON _          = fail "Object not a PhraseAlmostTree."
+
+-- |Convert a 'PAT' into a 'PhraseTree'.
+fromPAT :: PAT -> PhraseTree
+fromPAT (PhraseAlmostTree p s f) = Node (Phrase p s) $ map fromPAT f
+
+-- |I figure some people like to type a lot.
+fromPhraseAlmostTree :: PAT -> PhraseTree
+fromPhraseAlmostTree = fromPAT
+
+-- |Read a 'Phraselist', marshal it into a 'PhraseForest'.
+readPhraselist :: Phraselist t => t -> IO PhraseForest
+readPhraselist elist = do
+  lpath <- phraselistPath elist
+  ltext <- B.readFile lpath
+  let ljson = (eitherDecode ltext) :: Either String [PAT]
+  case ljson of
+    Left msg   -> fail msg
+    Right pats -> return $ map fromPAT pats
+
+-- |Alias for 'readPhraselist'
+loadPhraselist :: Phraselist t => t -> IO PhraseForest
+loadPhraselist = readPhraselist
+
+-- |Alias for 'readPhraselist'
+readPhraseFile :: Phraselist t => t -> IO PhraseForest
+readPhraseFile = readPhraselist
+
+-- |Alias for 'readPhraselist'
+loadPhraseFile :: Phraselist t => t -> IO PhraseForest
+loadPhraseFile = readPhraselist
+
+-- |Alias for 'readPhraselist'
+readPhraseForest :: Phraselist t => t -> IO PhraseForest
+readPhraseForest = readPhraselist
+
+-- |Alias for 'readPhraselist'
+loadPhraseForest :: Phraselist t => t -> IO PhraseForest
+loadPhraseForest = readPhraselist
+
+-- |Load a 'Phraselist' directly into a 'PhraseMap'
+readPhraseMap :: Phraselist t => t -> IO PhraseMap
+readPhraseMap plist = fmap mkMap $ readPhraselist plist
+
+-- |Alias for 'readPhraseMap'
+loadPhraseMap :: Phraselist t => t -> IO PhraseMap
+loadPhraseMap = readPhraseMap
