diff --git a/dictionaries/de_wordlist.xml b/dictionaries/de_wordlist.xml
index 40140f5..c7e46c6 100644
--- a/dictionaries/de_wordlist.xml
+++ b/dictionaries/de_wordlist.xml
@@ -1,9 +1,10 @@
-<wordlist locale="de" description="Allgemeines Wörterbuch" date="1337171108" version="7" options="german_umlaut_processing">
+<wordlist locale="de" description="Deutsch" date="1337654924" version="10" options="german_umlaut_processing">
  <w f="203" flags="">der</w>
  <w f="200" flags="">und</w>
  <w f="198" flags="">die</w>
  <w f="195" flags="">in</w>
  <w f="191" flags="">von</w>
+ <w f="190">über</w>
  <w f="188" flags="">den</w>
  <w f="186" flags="">des</w>
  <w f="185" flags="">im</w>
diff --git a/dictionaries/en_GB_wordlist.xml b/dictionaries/en_GB_wordlist.xml
index b2d703c..79ce932 100644
--- a/dictionaries/en_GB_wordlist.xml
+++ b/dictionaries/en_GB_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="en_GB" description="Main dictionary (UK English)" date="1337328254" version="8">
+<wordlist locale="en_GB" description="English (UK)" date="1337670570" version="10">
  <w f="222" flags="">the</w>
  <w f="214" flags="">of</w>
  <w f="212" flags="">and</w>
@@ -45,6 +45,7 @@
  <w f="174" flags="">time</w>
  <w f="173" flags="">all</w>
  <w f="173" flags="">be</w>
+ <w f="173" flags="">me</w>
  <w f="173" flags="">more</w>
  <w f="172" flags="">only</w>
  <w f="172" flags="">when</w>
@@ -164,6 +165,7 @@
  <w f="160" flags="">us</w>
  <w f="160" flags="">very</w>
  <w f="160" flags="">won</w>
+ <w f="160" flags="">yes</w>
  <w f="160" flags="">you're</w>
  <w f="159" flags="">along</w>
  <w f="159" flags="">built</w>
@@ -1157,7 +1159,7 @@
  <w f="138" flags="">little</w>
  <w f="138" flags="">mass</w>
  <w f="138" flags="">matches</w>
- <w f="138" flags="">me</w>
+ <w f="138" flags="">meat</w>
  <w f="138" flags="">offer</w>
  <w f="138" flags="">parties</w>
  <w f="138" flags="">pay</w>
@@ -3128,6 +3130,7 @@
  <w f="125" flags="">temperatures</w>
  <w f="125" flags="">tenure</w>
  <w f="125" flags="">thinking</w>
+ <w f="125">this'd</w>
  <w f="125" flags="">tone</w>
  <w f="125" flags="">tourist</w>
  <w f="125" flags="">trail</w>
@@ -3264,7 +3267,6 @@
  <w f="124" flags="">maps</w>
  <w f="124" flags="">marks</w>
  <w f="124" flags="">measured</w>
- <w f="124" flags="">meat</w>
  <w f="124" flags="">memorial</w>
  <w f="124" flags="">met</w>
  <w f="124" flags="">mines</w>
@@ -4150,6 +4152,7 @@
  <w f="120" flags="">fun</w>
  <w f="120" flags="">gallery</w>
  <w f="120" flags="">girlfriend</w>
+ <w f="120">gmail</w>
  <w f="120" flags="">grain</w>
  <w f="120" flags="">grass</w>
  <w f="120" flags="">guidance</w>
@@ -4285,6 +4288,7 @@
  <w f="120" flags="">thrown</w>
  <w f="120" flags="">tomorrow</w>
  <w f="120" flags="">tonight</w>
+ <w f="120">totally</w>
  <w f="120" flags="">towers</w>
  <w f="120" flags="">transformation</w>
  <w f="120" flags="">transported</w>
@@ -5072,7 +5076,6 @@
  <w f="117" flags="">tobacco</w>
  <w f="117" flags="">topped</w>
  <w f="117" flags="">torpedo</w>
- <w f="117" flags="">totally</w>
  <w f="117" flags="">trace</w>
  <w f="117" flags="">transform</w>
  <w f="117" flags="">transmitted</w>
@@ -5552,6 +5555,7 @@
  <w f="115" flags="">heated</w>
  <w f="115" flags="">honours</w>
  <w f="115" flags="">hoping</w>
+ <w f="115">how're</w>
  <w f="115" flags="">hunt</w>
  <w f="115" flags="">immigrant</w>
  <w f="115" flags="">inaugurated</w>
@@ -8019,6 +8023,7 @@
  <w f="108" flags="">dug</w>
  <w f="108" flags="">dwarf</w>
  <w f="108" flags="">dwellings</w>
+ <w f="108">e-mail</w>
  <w f="108" flags="">economist</w>
  <w f="108" flags="">elevator</w>
  <w f="108" flags="">embraced</w>
@@ -11130,7 +11135,6 @@
  <w f="102" flags="">worms</w>
  <w f="102" flags="">wrestled</w>
  <w f="102" flags="">yeast</w>
- <w f="102" flags="">yes</w>
  <w f="101" flags="">Abdul</w>
  <w f="101" flags="">Aberdeen</w>
  <w f="101" flags="">Adolf</w>
@@ -11735,6 +11739,7 @@
  <w f="100" flags="">balancing</w>
  <w f="100" flags="">balloons</w>
  <w f="100" flags="">banquet</w>
+ <w f="100">barbeque</w>
  <w f="100" flags="">barge</w>
  <w f="100" flags="">barley</w>
  <w f="100" flags="">basilica</w>
@@ -12898,6 +12903,7 @@
  <w f="98" flags="">Rex</w>
  <w f="98" flags="">Riley</w>
  <w f="98" flags="abreviation">SBS</w>
+ <w f="98">SMS</w>
  <w f="98" flags="">Salisbury</w>
  <w f="98" flags="">Santos</w>
  <w f="98" flags="">Saturn</w>
@@ -13135,6 +13141,7 @@
  <w f="98" flags="">flu</w>
  <w f="98" flags="">fluorescent</w>
  <w f="98" flags="">flush</w>
+ <w f="98">foe</w>
  <w f="98" flags="">footprint</w>
  <w f="98" flags="">forecasts</w>
  <w f="98" flags="">foreground</w>
@@ -13408,6 +13415,7 @@
  <w f="98" flags="">thrash</w>
  <w f="98" flags="">thyroid</w>
  <w f="98" flags="">tides</w>
+ <w f="98">timeframe</w>
  <w f="98" flags="">tolerated</w>
  <w f="98" flags="">tolls</w>
  <w f="98" flags="">tonal</w>
@@ -15178,6 +15186,7 @@
  <w f="95" flags="">nephews</w>
  <w f="95" flags="">netted</w>
  <w f="95" flags="">numeric</w>
+ <w f="95">nut</w>
  <w f="95" flags="">obey</w>
  <w f="95" flags="">obscured</w>
  <w f="95" flags="">obverse</w>
@@ -21006,6 +21015,7 @@
  <w f="88" flags="">wafer</w>
  <w f="88" flags="">warmed</w>
  <w f="88" flags="">wasps</w>
+ <w f="88">wax</w>
  <w f="88" flags="">wellness</w>
  <w f="88" flags="">whistles</w>
  <w f="88" flags="">wills</w>
@@ -26639,7 +26649,6 @@
  <w f="82" flags="">gust</w>
  <w f="82" flags="">guts</w>
  <w f="82" flags="">gymnasiums</w>
- <w f="82">ha-ha</w>
  <w f="82">half-life</w>
  <w f="82" flags="">halides</w>
  <w f="82" flags="">hallucinogenic</w>
@@ -27187,6 +27196,7 @@
  <w f="81" flags="">Ares</w>
  <w f="81" flags="">Argonauts</w>
  <w f="81" flags="">Ashkenazi</w>
+ <w f="81">Asus</w>
  <w f="81" flags="">Athenians</w>
  <w f="81" flags="">Augustinian</w>
  <w f="81" flags="">Austen</w>
@@ -28590,6 +28600,7 @@
  <w f="80" flags="">Weinberg</w>
  <w f="80" flags="">Westmoreland</w>
  <w f="80" flags="">Westport</w>
+ <w f="80">Wi-Fi</w>
  <w f="80" flags="">Wilfrid</w>
  <w f="80" flags="">Windham</w>
  <w f="80" flags="">Worthington</w>
@@ -28893,6 +28904,7 @@
  <w f="80" flags="">evangelistic</w>
  <w f="80" flags="">evaporate</w>
  <w f="80" flags="">eventing</w>
+ <w f="80">everything's</w>
  <w f="80" flags="">excision</w>
  <w f="80" flags="">exclaims</w>
  <w f="80" flags="">exerting</w>
@@ -29565,6 +29577,7 @@
  <w f="79" flags="">Guatemalan</w>
  <w f="79" flags="">Guevara</w>
  <w f="79" flags="">Gustavo</w>
+ <w f="79">HTC</w>
  <w f="79" flags="abreviation">HVDC</w>
  <w f="79" flags="">Haines</w>
  <w f="79" flags="">Hannover</w>
@@ -30119,6 +30132,7 @@
  <w f="79" flags="">genre's</w>
  <w f="79" flags="">geometrically</w>
  <w f="79" flags="">ghee</w>
+ <w f="79">girls'</w>
  <w f="79" flags="">glandular</w>
  <w f="79" flags="">glittering</w>
  <w f="79" flags="">goaltending</w>
@@ -30261,6 +30275,7 @@
  <w f="79" flags="">metamorphosed</w>
  <w f="79" flags="">midterm</w>
  <w f="79" flags="">midtown</w>
+ <w f="79">might've</w>
  <w f="79" flags="">millionaires</w>
  <w f="79" flags="">mindful</w>
  <w f="79" flags="">ministered</w>
@@ -30386,6 +30401,7 @@
  <w f="79" flags="">quilt</w>
  <w f="79" flags="">race's</w>
  <w f="79" flags="">radio's</w>
+ <w f="79">ramen</w>
  <w f="79" flags="">rapprochement</w>
  <w f="79" flags="">rayon</w>
  <w f="79" flags="">readability</w>
@@ -32278,6 +32294,7 @@
  <w f="77" flags="abreviation">WG</w>
  <w f="77" flags="abreviation">WNEW</w>
  <w f="77" flags="">Walloon</w>
+ <w f="77">Walmart</w>
  <w f="77" flags="">Weldon</w>
  <w f="77" flags="">Weller</w>
  <w f="77" flags="">Whitlam</w>
@@ -32528,6 +32545,7 @@
  <w f="77" flags="">echolocation</w>
  <w f="77" flags="">ecologist</w>
  <w f="77" flags="">ecologists</w>
+ <w f="77">editors'</w>
  <w f="77" flags="">effigies</w>
  <w f="77" flags="">egos</w>
  <w f="77" flags="">electrocution</w>
@@ -33010,6 +33028,7 @@
  <w f="77" flags="">slimmer</w>
  <w f="77" flags="">slipper</w>
  <w f="77" flags="">slurs</w>
+ <w f="77">smartphone</w>
  <w f="77" flags="">smokes</w>
  <w f="77" flags="">snapshots</w>
  <w f="77" flags="">snorkeling</w>
@@ -33042,6 +33061,7 @@
  <w f="77" flags="">squall</w>
  <w f="77" flags="">squandered</w>
  <w f="77" flags="">stares</w>
+ <w f="77">states'</w>
  <w f="77" flags="">steelhead</w>
  <w f="77" flags="">stencil</w>
  <w f="77" flags="">stepbrother</w>
@@ -33166,6 +33186,7 @@
  <w f="77" flags="">wedged</w>
  <w f="77" flags="">weeklies</w>
  <w f="77" flags="">wellbeing</w>
+ <w f="77">whatever's</w>
  <w f="77" flags="">whistleblower</w>
  <w f="77" flags="">wickedness</w>
  <w f="77" flags="">wilt</w>
@@ -34205,6 +34226,7 @@
  <w f="76" flags="">rationalisation</w>
  <w f="76" flags="">ravaging</w>
  <w f="76" flags="">reacquired</w>
+ <w f="76">readers'</w>
  <w f="76" flags="">realtime</w>
  <w f="76" flags="">reanimated</w>
  <w f="76" flags="">reapportionment</w>
@@ -34263,6 +34285,7 @@
  <w f="76" flags="">scents</w>
  <w f="76" flags="">schoolboys</w>
  <w f="76" flags="">schoolmates</w>
+ <w f="76">sci-fi</w>
  <w f="76" flags="">scooped</w>
  <w f="76" flags="">scoops</w>
  <w f="76" flags="">scopes</w>
@@ -34447,6 +34470,7 @@
  <w f="76" flags="">waxing</w>
  <w f="76" flags="">whaler</w>
  <w f="76" flags="">wheelers</w>
+ <w f="76">whenever's</w>
  <w f="76" flags="">whey</w>
  <w f="76" flags="">whitewashed</w>
  <w f="76" flags="">wholeheartedly</w>
@@ -35390,6 +35414,7 @@
  <w f="75" flags="">nomad</w>
  <w f="75" flags="">nonempty</w>
  <w f="75" flags="">nonverbal</w>
+ <w f="75">now's</w>
  <w f="75" flags="">obscures</w>
  <w f="75" flags="">obsessions</w>
  <w f="75" flags="">occultism</w>
@@ -35751,7 +35776,9 @@
  <w f="75" flags="">wedded</w>
  <w f="75" flags="">weft</w>
  <w f="75" flags="">westerners</w>
+ <w f="75">what'll</w>
  <w f="75" flags="">whistled</w>
+ <w f="75">whoever's</w>
  <w f="75" flags="">winegrowing</w>
  <w f="75" flags="">wintered</w>
  <w f="75" flags="">withstanding</w>
@@ -35809,6 +35836,7 @@
  <w f="74" flags="">Ben's</w>
  <w f="74" flags="">Benetton</w>
  <w f="74" flags="">Bevan</w>
+ <w f="74">Beyonce</w>
  <w f="74" flags="">Billy's</w>
  <w f="74" flags="">Biscayne</w>
  <w f="74" flags="">Blackadder</w>
@@ -36395,6 +36423,7 @@
  <w f="74" flags="">ellipsis</w>
  <w f="74" flags="">emanate</w>
  <w f="74" flags="">embalming</w>
+ <w f="74">emo</w>
  <w f="74" flags="">empathic</w>
  <w f="74" flags="">encroachments</w>
  <w f="74" flags="">engravers</w>
@@ -36528,6 +36557,7 @@
  <w f="74" flags="">hoppers</w>
  <w f="74" flags="">horoscope</w>
  <w f="74" flags="">housings</w>
+ <w f="74">how'd</w>
  <w f="74" flags="">humus</w>
  <w f="74" flags="">hussars</w>
  <w f="74" flags="">hustle</w>
@@ -56886,6 +56916,7 @@
  <w f="60" flags="">megacity</w>
  <w f="60" flags="">megalith</w>
  <w f="60" flags="">megalomania</w>
+ <w f="60">meme</w>
  <w f="60" flags="">memorial's</w>
  <w f="60" flags="">memorised</w>
  <w f="60" flags="">metafiction</w>
@@ -108059,6 +108090,7 @@
  <w f="25" flags="">Chernobyl's</w>
  <w f="25" flags="">Chesapeake's</w>
  <w f="25" flags="">Cheviots</w>
+ <w f="25">Chewbacca</w>
  <w f="25" flags="">Chimer</w>
  <w f="25" flags="">Chippendale's</w>
  <w f="25" flags="">Chretien's</w>
@@ -138949,6 +138981,7 @@
  <w f="1" flags="">Irrelative</w>
  <w f="1" flags="">Irtysh's</w>
  <w f="1" flags="">Irv's</w>
+ <w f="1">Isaac</w>
  <w f="1" flags="">Isadore's</w>
  <w f="1" flags="">Isidro's</w>
  <w f="1" flags="">Islamism's</w>
@@ -142637,6 +142670,7 @@
  <w f="1" flags="">Thunderclap's</w>
  <w f="1" flags="">Thunderer's</w>
  <w f="1" flags="">Thunderhead's</w>
+ <w f="1">Thur</w>
  <w f="1" flags="">Thurgau's</w>
  <w f="1" flags="">Thwacker</w>
  <w f="1" flags="">Thwarter</w>
@@ -143391,6 +143425,7 @@
  <w f="1" flags="">Xhosa's</w>
  <w f="1" flags="">Ximenes's</w>
  <w f="1" flags="">Ximenez's</w>
+ <w f="1">Xoom</w>
  <w f="1" flags="abreviation">YMMV</w>
  <w f="1" flags="">Yachtsman's</w>
  <w f="1" flags="">Yachtswoman's</w>
@@ -148396,6 +148431,7 @@
  <w f="1" flags="">hypothesiser</w>
  <w f="1" flags="">hypothesists</w>
  <w f="1" flags="">hysteroid</w>
+ <w f="1">iOS</w>
  <w f="1" flags="">ibuprofens</w>
  <w f="1" flags="">ichthyoid</w>
  <w f="1" flags="">iconography's</w>
@@ -152501,6 +152537,7 @@
  <w f="1" flags="">runers</w>
  <w f="1" flags="">runlet</w>
  <w f="1" flags="">runoff's</w>
+ <w f="1">runtime</w>
  <w f="1" flags="">rupture's</w>
  <w f="1" flags="">ruralists</w>
  <w f="1" flags="">ruralites</w>
@@ -155820,6 +155857,7 @@
  <w f="0" flags="medical">clitorises</w>
  <w f="0" flags="medical">cloaca</w>
  <w f="0" flags="medical">clyster</w>
+ <w f="0">cmon</w>
  <w f="0" flags="abreviation">co</w>
  <w f="0" flags="">cock</w>
  <w f="0" flags="">cockier</w>
@@ -155907,6 +155945,7 @@
  <w f="0" flags="offensive">dildo</w>
  <w f="0" flags="offensive">dildos</w>
  <w f="0" flags="n">dirty</w>
+ <w f="0">dogfood</w>
  <w f="0" flags="n">dogging</w>
  <w f="0" flags="medical">dominatrices</w>
  <w f="0" flags="n">dong</w>
@@ -155978,6 +156017,7 @@
  <w f="0" flags="offensive">farted</w>
  <w f="0" flags="offensive">farting</w>
  <w f="0" flags="offensive">farts</w>
+ <w f="0">fave</w>
  <w f="0" flags="medical">fecaliths</w>
  <w f="0" flags="medical">fellate</w>
  <w f="0" flags="medical">fellated</w>
@@ -156030,6 +156070,7 @@
  <w f="0" flags="n">gangbangs</w>
  <w f="0" flags="n">gaping</w>
  <w f="0" flags="">geek</w>
+ <w f="0">geez</w>
  <w f="0" flags="medical">genital</w>
  <w f="0" flags="medical">genitalia</w>
  <w f="0" flags="medical">genitalic</w>
@@ -156372,6 +156413,7 @@
  <w f="0" flags="">playgirl</w>
  <w f="0" flags="">playgirls</w>
  <w f="0" flags="n">playmates</w>
+ <w f="0">pls</w>
  <w f="0" flags="n">plumper</w>
  <w f="0" flags="">poi</w>
  <w f="0" flags="">pol</w>
@@ -156678,6 +156720,7 @@
  <w f="0" flags="medical">testicles</w>
  <w f="0" flags="medical">testicular</w>
  <w f="0" flags="medical">testis</w>
+ <w f="0">thingy</w>
  <w f="0" flags="">threesome</w>
  <w f="0" flags="">threesomes</w>
  <w f="0" flags="">thud</w>
@@ -156718,6 +156761,7 @@
  <w f="0" flags="babytalk">twat</w>
  <w f="0" flags="babytalk">twats</w>
  <w f="0" flags="">twit</w>
+ <w f="0">ull</w>
  <w f="0" flags="babytalk">underclothing</w>
  <w f="0" flags="babytalk">underwear</w>
  <w f="0" flags="babytalk">undy</w>
diff --git a/dictionaries/en_US_wordlist.xml b/dictionaries/en_US_wordlist.xml
index 1e14da4..075a104 100644
--- a/dictionaries/en_US_wordlist.xml
+++ b/dictionaries/en_US_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="en_GB" description="Main dictionary (US English)" date="1337328218" version="8">
+<wordlist locale="en_US" description="English (US)" date="1337667777" version="10">
  <w f="222" flags="">the</w>
  <w f="214" flags="">of</w>
  <w f="212" flags="">and</w>
@@ -45,6 +45,7 @@
  <w f="174" flags="">time</w>
  <w f="173" flags="">all</w>
  <w f="173" flags="">be</w>
+ <w f="173" flags="">me</w>
  <w f="173" flags="">more</w>
  <w f="172" flags="">only</w>
  <w f="172" flags="">when</w>
@@ -163,6 +164,7 @@
  <w f="160" flags="">us</w>
  <w f="160" flags="">very</w>
  <w f="160" flags="">won</w>
+ <w f="160" flags="">yes</w>
  <w f="160" flags="">you're</w>
  <w f="159" flags="">along</w>
  <w f="159" flags="">built</w>
@@ -1168,7 +1170,7 @@
  <w f="138" flags="">little</w>
  <w f="138" flags="">mass</w>
  <w f="138" flags="">matches</w>
- <w f="138" flags="">me</w>
+ <w f="138" flags="">meat</w>
  <w f="138" flags="">offer</w>
  <w f="138" flags="">parties</w>
  <w f="138" flags="">pay</w>
@@ -3337,7 +3339,6 @@
  <w f="124" flags="">maps</w>
  <w f="124" flags="">marks</w>
  <w f="124" flags="">measured</w>
- <w f="124" flags="">meat</w>
  <w f="124" flags="">memorial</w>
  <w f="124" flags="">met</w>
  <w f="124" flags="">mines</w>
@@ -11481,7 +11482,6 @@
  <w f="102" flags="">worms</w>
  <w f="102" flags="">wrestled</w>
  <w f="102" flags="">yeast</w>
- <w f="102" flags="">yes</w>
  <w f="101" flags="">Abdul</w>
  <w f="101" flags="">Aberdeen</w>
  <w f="101" flags="">Adolf</w>
@@ -27696,7 +27696,6 @@
  <w f="82" flags="">gust</w>
  <w f="82" flags="">guts</w>
  <w f="82" flags="">gymnasiums</w>
- <w f="82">ha-ha</w>
  <w f="82">half-life</w>
  <w f="82" flags="">halides</w>
  <w f="82" flags="">hallucinogenic</w>
@@ -59001,6 +59000,7 @@
  <w f="60" flags="">megacity</w>
  <w f="60" flags="">megalith</w>
  <w f="60" flags="">megalomania</w>
+ <w f="60">meme</w>
  <w f="60" flags="">memorial's</w>
  <w f="60" flags="">metafiction</w>
  <w f="60" flags="">metamorphoses</w>
diff --git a/dictionaries/en_wordlist.xml b/dictionaries/en_wordlist.xml
index 3839fb8..eff5fd2 100644
--- a/dictionaries/en_wordlist.xml
+++ b/dictionaries/en_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="en" description="Main dictionary" date="1337248980" version="7">
+<wordlist locale="en" description="English" date="1337667811" version="10">
  <w f="222" flags="">the</w>
  <w f="214" flags="">of</w>
  <w f="212" flags="">and</w>
@@ -45,6 +45,7 @@
  <w f="174" flags="">time</w>
  <w f="173" flags="">all</w>
  <w f="173" flags="">be</w>
+ <w f="173" flags="">me</w>
  <w f="173" flags="">more</w>
  <w f="172" flags="">only</w>
  <w f="172" flags="">when</w>
@@ -163,6 +164,7 @@
  <w f="160" flags="">us</w>
  <w f="160" flags="">very</w>
  <w f="160" flags="">won</w>
+ <w f="160" flags="">yes</w>
  <w f="160" flags="">you're</w>
  <w f="159" flags="">along</w>
  <w f="159" flags="">built</w>
@@ -803,7 +805,6 @@
  <w f="143" flags="">variety</w>
  <w f="143" flags="">view</w>
  <w f="142" flags="">German</w>
- <w f="142" flags="">I</w>
  <w f="142" flags="">London</w>
  <w f="142" flags="">West</w>
  <w f="142" flags="">actually</w>
@@ -1171,7 +1172,7 @@
  <w f="138" flags="">little</w>
  <w f="138" flags="">mass</w>
  <w f="138" flags="">matches</w>
- <w f="138" flags="">me</w>
+ <w f="138" flags="">meat</w>
  <w f="138" flags="">offer</w>
  <w f="138" flags="">parties</w>
  <w f="138" flags="">pay</w>
@@ -3351,7 +3352,6 @@
  <w f="124" flags="">maps</w>
  <w f="124" flags="">marks</w>
  <w f="124" flags="">measured</w>
- <w f="124" flags="">meat</w>
  <w f="124" flags="">memorial</w>
  <w f="124" flags="">met</w>
  <w f="124" flags="">mines</w>
@@ -11571,7 +11571,6 @@
  <w f="102" flags="">worms</w>
  <w f="102" flags="">wrestled</w>
  <w f="102" flags="">yeast</w>
- <w f="102" flags="">yes</w>
  <w f="101" flags="">Abdul</w>
  <w f="101" flags="">Aberdeen</w>
  <w f="101" flags="">Adolf</w>
@@ -11625,7 +11624,6 @@
  <w f="101" flags="">Lynn</w>
  <w f="101" flags="">Lyon</w>
  <w f="101" flags="abreviation">MCC</w>
- <w f="101" flags="">Mac</w>
  <w f="101" flags="">Macedonia</w>
  <w f="101" flags="">Malay</w>
  <w f="101" flags="">Martha</w>
@@ -13698,7 +13696,6 @@
  <w f="98" flags="">flu</w>
  <w f="98" flags="">fluorescent</w>
  <w f="98" flags="">flush</w>
- <w f="98">foe</w>
  <w f="98" flags="">footprint</w>
  <w f="98" flags="">forecasts</w>
  <w f="98" flags="">foreground</w>
@@ -15875,7 +15872,6 @@
  <w f="95" flags="">nephews</w>
  <w f="95" flags="">netted</w>
  <w f="95" flags="">numeric</w>
- <w f="95">nut</w>
  <w f="95" flags="">obey</w>
  <w f="95" flags="">obscured</w>
  <w f="95" flags="">obverse</w>
@@ -22053,7 +22049,6 @@
  <w f="88" flags="">wafer</w>
  <w f="88" flags="">warmed</w>
  <w f="88" flags="">wasps</w>
- <w f="88">wax</w>
  <w f="88" flags="">wellness</w>
  <w f="88" flags="">whistles</w>
  <w f="88" flags="">wills</w>
@@ -28032,7 +28027,6 @@
  <w f="82" flags="">gust</w>
  <w f="82" flags="">guts</w>
  <w f="82" flags="">gymnasiums</w>
- <w f="82">ha-ha</w>
  <w f="82">half-life</w>
  <w f="82" flags="">halides</w>
  <w f="82" flags="">hallucinogenic</w>
@@ -41924,7 +41918,6 @@
  <w f="71" flags="abreviation">CFCs</w>
  <w f="71" flags="abreviation">CLS</w>
  <w f="71" flags="abreviation">CMF</w>
- <w f="71" flags="abreviation">CNA</w>
  <w f="71" flags="abreviation">CTP</w>
  <w f="71" flags="">Cabral</w>
  <w f="71" flags="">Caligula</w>
@@ -59972,6 +59965,7 @@
  <w f="60" flags="">megacity</w>
  <w f="60" flags="">megalith</w>
  <w f="60" flags="">megalomania</w>
+ <w f="60">meme</w>
  <w f="60" flags="">memorial's</w>
  <w f="60" flags="">memorised</w>
  <w f="60" flags="">metafiction</w>
@@ -60718,7 +60712,6 @@
  <w f="59" flags="abreviation">IEE</w>
  <w f="59" flags="abreviation">IPSC</w>
  <w f="59" flags="abreviation">IRBM</w>
- <w f="59" flags="abreviation">ITIS</w>
  <w f="59" flags="">Ilkeston</w>
  <w f="59" flags="">InfoWorld</w>
  <w f="59" flags="">Infosys</w>
@@ -69231,7 +69224,6 @@
  <w f="54" flags="">Honshu</w>
  <w f="54" flags="">Hui's</w>
  <w f="54" flags="abreviation">IBSF</w>
- <w f="54" flags="abreviation">ITD</w>
  <w f="54" flags="">Ibrahim's</w>
  <w f="54" flags="">Imogene</w>
  <w f="54" flags="">Inmarsat</w>
@@ -114336,6 +114328,7 @@
  <w f="25" flags="">Chernobyl's</w>
  <w f="25" flags="">Chesapeake's</w>
  <w f="25" flags="">Cheviots</w>
+ <w f="25">Chewbacca</w>
  <w f="25" flags="">Chimer</w>
  <w f="25" flags="">Chippendale's</w>
  <w f="25" flags="">Chretien's</w>
@@ -146792,7 +146785,6 @@
  <w f="1" flags="">Irrelative</w>
  <w f="1" flags="">Irtysh's</w>
  <w f="1" flags="">Irv's</w>
- <w f="1">Isaac</w>
  <w f="1" flags="">Isadore's</w>
  <w f="1" flags="">Isidro's</w>
  <w f="1" flags="">Islamism's</w>
@@ -160937,7 +160929,6 @@
  <w f="1" flags="">runers</w>
  <w f="1" flags="">runlet</w>
  <w f="1" flags="">runoff's</w>
- <w f="1">runtime</w>
  <w f="1" flags="">rupture's</w>
  <w f="1" flags="">ruralists</w>
  <w f="1" flags="">ruralites</w>
diff --git a/dictionaries/es_wordlist.xml b/dictionaries/es_wordlist.xml
index d7f0ac3..cfaa7d9 100644
--- a/dictionaries/es_wordlist.xml
+++ b/dictionaries/es_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="es" description="Diccionario principal" date="1337171277" version="7">
+<wordlist locale="es" description="Español" date="1337655036" version="10">
  <w f="207" flags="">de</w>
  <w f="198" flags="">la</w>
  <w f="196" flags="">en</w>
diff --git a/dictionaries/fa_wordlist.xml b/dictionaries/fa_wordlist.xml
index a0e417a..ba7c4c0 100644
--- a/dictionaries/fa_wordlist.xml
+++ b/dictionaries/fa_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="fa" description="فرهنگ‌ لغت اصلی" date="1337171515" version="7">
+<wordlist locale="fa" description="\u067E\u0627\u0631\u0633\u06CC\u000A" date="1337655087" version="10">
  <w f="168" flags="">و</w>
  <w f="167" flags="">در</w>
  <w f="163" flags="">به</w>
diff --git a/dictionaries/fr_wordlist.xml b/dictionaries/fr_wordlist.xml
index cb047a4..1e0436c 100644
--- a/dictionaries/fr_wordlist.xml
+++ b/dictionaries/fr_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="fr" description="Dictionnaire principal" date="1337330537" version="8" options="french_ligature_processing">
+<wordlist locale="fr" description="Français" date="1337655131" version="10" options="french_ligature_processing">
  <w f="209" flags="">de</w>
  <w f="200" flags="">la</w>
  <w f="197" flags="">et</w>
diff --git a/dictionaries/hr_wordlist.xml b/dictionaries/hr_wordlist.xml
index fe79d59..639feef 100644
--- a/dictionaries/hr_wordlist.xml
+++ b/dictionaries/hr_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="hr" description="Glavni rječnik" date="1337171563" version="7">
+<wordlist locale="hr" description="Hrvatski" date="1337655174" version="10">
  <w f="165" flags="">je</w>
  <w f="164" flags="">i</w>
  <w f="162" flags="">u</w>
diff --git a/dictionaries/it_wordlist.xml b/dictionaries/it_wordlist.xml
index dfb9fca..33f475e 100644
--- a/dictionaries/it_wordlist.xml
+++ b/dictionaries/it_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="it" description="Dizionario principale" date="1337171609" version="7">
+<wordlist locale="it" description="Italiano" date="1337655212" version="10">
  <w f="199" flags="">di</w>
  <w f="193" flags="">e</w>
  <w f="189" flags="">il</w>
diff --git a/dictionaries/pt_wordlist.xml b/dictionaries/pt_BR_wordlist.xml
similarity index 99%
rename from dictionaries/pt_wordlist.xml
rename to dictionaries/pt_BR_wordlist.xml
index 4129797..cae7f12 100644
--- a/dictionaries/pt_wordlist.xml
+++ b/dictionaries/pt_BR_wordlist.xml
@@ -1,4 +1,4 @@
-nil
+<wordlist locale="pt_BR" description="Portugês (Brasil)" date="1337655248" version="10">
  <w f="193" flags="">de</w>
  <w f="183" flags="">a</w>
  <w f="183" flags="">e</w>
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 393bc18..06d852b 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -30,7 +30,8 @@
             <meta-data android:name="android.view.textservice.scs" android:resource="@xml/spellchecker" />
         </service>
 
-        <activity android:name="SettingsActivity" android:label="@string/english_ime_settings">
+        <activity android:name="SettingsActivity" android:label="@string/english_ime_settings"
+                  android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
             </intent-filter>
diff --git a/java/proguard.flags b/java/proguard.flags
index fd73e12..34e23aa 100644
--- a/java/proguard.flags
+++ b/java/proguard.flags
@@ -7,6 +7,10 @@
   *;
 }
 
+-keep class com.android.inputmethod.keyboard.ProximityInfo {
+  <init>(com.android.inputmethod.keyboard.ProximityInfo);
+}
+
 -keep class com.android.inputmethod.latin.Suggest {
   <init>(...);
   com.android.inputmethod.latin.SuggestedWords getSuggestions(...);
diff --git a/java/res/raw/main_de.dict b/java/res/raw/main_de.dict
index 68b0dce..1a7b305 100644
--- a/java/res/raw/main_de.dict
+++ b/java/res/raw/main_de.dict
Binary files differ
diff --git a/java/res/raw/main_en.dict b/java/res/raw/main_en.dict
index f544da6..14865a2 100644
--- a/java/res/raw/main_en.dict
+++ b/java/res/raw/main_en.dict
Binary files differ
diff --git a/java/res/raw/main_es.dict b/java/res/raw/main_es.dict
index 8321c70..71370aa 100644
--- a/java/res/raw/main_es.dict
+++ b/java/res/raw/main_es.dict
Binary files differ
diff --git a/java/res/raw/main_fr.dict b/java/res/raw/main_fr.dict
index 084ef7c..4723961 100644
--- a/java/res/raw/main_fr.dict
+++ b/java/res/raw/main_fr.dict
Binary files differ
diff --git a/java/res/raw/main_it.dict b/java/res/raw/main_it.dict
index ed260f2..00bbdbe 100644
--- a/java/res/raw/main_it.dict
+++ b/java/res/raw/main_it.dict
Binary files differ
diff --git a/java/res/values-en/whitelist.xml b/java/res/values-en/whitelist.xml
index 29a828c..0a1646f 100644
--- a/java/res/values-en/whitelist.xml
+++ b/java/res/values-en/whitelist.xml
@@ -174,11 +174,6 @@
         <item>shouldent</item>
         <item>shouldn\'t</item>
 
-        <!-- TODO: Remove this entry after "yes" gets bumped up in the dictionary. -->
-        <item>255</item>
-        <item>tes</item>
-        <item>yes</item>
-
         <item>255</item>
         <item>thatd</item>
         <item>that\'d</item>
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
index 3cfef97..8bc7893 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
@@ -29,7 +29,6 @@
 import android.util.SparseArray;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewParent;
 import android.view.ViewTreeObserver.OnGlobalLayoutListener;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.inputmethod.EditorInfo;
@@ -276,18 +275,7 @@
      */
     void sendAccessibilityEventForKey(Key key, int eventType) {
         final AccessibilityEvent event = createAccessibilityEvent(key, eventType);
-        final ViewParent parent = mKeyboardView.getParent();
-
-        if (parent == null) {
-            return;
-        }
-
-        if (!parent.requestSendAccessibilityEvent(mKeyboardView, event)) {
-            // TODO: Remove this line after the top-level view for the IME
-            // window is fixed to be non-null and requestSendAccessibilityEvent
-            // can return true.
-            mAccessibilityUtils.requestSendAccessibilityEvent(event);
-        }
+        mAccessibilityUtils.requestSendAccessibilityEvent(event);
     }
 
     /**
diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index 5ea28ab..9d8bace 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -42,6 +42,8 @@
     private final int mKeyboardMinWidth;
     private final int mKeyboardHeight;
     private final int mMostCommonKeyWidth;
+    private final Key[] mKeys;
+    private final TouchPositionCorrection mTouchPositionCorrection;
     private final Key[][] mGridNeighbors;
     private final String mLocaleStr;
 
@@ -62,13 +64,36 @@
         mKeyboardHeight = height;
         mKeyHeight = mostCommonKeyHeight;
         mMostCommonKeyWidth = mostCommonKeyWidth;
+        mKeys = keys;
+        mTouchPositionCorrection = touchPositionCorrection;
         mGridNeighbors = new Key[mGridSize][];
         if (minWidth == 0 || height == 0) {
             // No proximity required. Keyboard might be more keys keyboard.
             return;
         }
-        computeNearestNeighbors(
-                mostCommonKeyWidth, keys, touchPositionCorrection);
+        computeNearestNeighbors();
+        mNativeProximityInfo = createNativeProximityInfo();
+    }
+
+    // TODO: Remove this public constructor when the native part of the ProximityInfo becomes
+    // immutable.
+    // This public constructor aims only for test purpose.
+    public ProximityInfo(ProximityInfo o) {
+        mLocaleStr = o.mLocaleStr;
+        mGridWidth = o.mGridWidth;
+        mGridHeight = o.mGridHeight;
+        mGridSize = o.mGridSize;
+        mCellWidth = o.mCellWidth;
+        mCellHeight = o.mCellHeight;
+        mKeyboardMinWidth = o.mKeyboardMinWidth;
+        mKeyboardHeight = o.mKeyboardHeight;
+        mKeyHeight = o.mKeyHeight;
+        mMostCommonKeyWidth = o.mMostCommonKeyWidth;
+        mKeys = o.mKeys;
+        mTouchPositionCorrection = o.mTouchPositionCorrection;
+        mGridNeighbors = new Key[mGridSize][];
+        computeNearestNeighbors();
+        mNativeProximityInfo = createNativeProximityInfo();
     }
 
     public static ProximityInfo createDummyProximityInfo() {
@@ -100,8 +125,12 @@
 
     private native void releaseProximityInfoNative(long nativeProximityInfo);
 
-    private final void setProximityInfo(Key[][] gridNeighborKeys, int keyboardWidth,
-            int keyboardHeight, final Key[] keys, TouchPositionCorrection touchPositionCorrection) {
+    private final long createNativeProximityInfo() {
+        final Key[][] gridNeighborKeys = mGridNeighbors;
+        final int keyboardWidth = mKeyboardMinWidth;
+        final int keyboardHeight = mKeyboardHeight;
+        final Key[] keys = mKeys;
+        final TouchPositionCorrection touchPositionCorrection = mTouchPositionCorrection;
         final int[] proximityCharsArray = new int[mGridSize * MAX_PROXIMITY_CHARS_SIZE];
         Arrays.fill(proximityCharsArray, KeyDetector.NOT_A_CODE);
         for (int i = 0; i < mGridSize; ++i) {
@@ -156,7 +185,7 @@
             sweetSpotCenterXs = sweetSpotCenterYs = sweetSpotRadii = null;
         }
 
-        mNativeProximityInfo = setProximityInfoNative(mLocaleStr, MAX_PROXIMITY_CHARS_SIZE,
+        return setProximityInfoNative(mLocaleStr, MAX_PROXIMITY_CHARS_SIZE,
                 keyboardWidth, keyboardHeight, mGridWidth, mGridHeight, mMostCommonKeyWidth,
                 proximityCharsArray,
                 keyCount, keyXCoordinates, keyYCoordinates, keyWidths, keyHeights, keyCharCodes,
@@ -179,8 +208,9 @@
         }
     }
 
-    private void computeNearestNeighbors(int defaultWidth, final Key[] keys,
-            TouchPositionCorrection touchPositionCorrection) {
+    private void computeNearestNeighbors() {
+        final int defaultWidth = mMostCommonKeyWidth;
+        final Key[] keys = mKeys;
         final HashMap<Integer, Key> keyCodeMap = new HashMap<Integer, Key>();
         for (final Key key : keys) {
             keyCodeMap.put(key.mCode, key);
@@ -206,8 +236,6 @@
                         Arrays.copyOfRange(neighborKeys, 0, count);
             }
         }
-        setProximityInfo(mGridNeighbors, mKeyboardMinWidth, mKeyboardHeight, keys,
-                touchPositionCorrection);
     }
 
     public void fillArrayWithNearestKeyCodes(int x, int y, int primaryKeyCode, int[] dest) {
diff --git a/java/src/com/android/inputmethod/latin/AdditionalSubtype.java b/java/src/com/android/inputmethod/latin/AdditionalSubtype.java
index f0076a5..ffdbfbb 100644
--- a/java/src/com/android/inputmethod/latin/AdditionalSubtype.java
+++ b/java/src/com/android/inputmethod/latin/AdditionalSubtype.java
@@ -22,6 +22,7 @@
 import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME;
 
 import android.os.Build;
+import android.text.TextUtils;
 import android.view.inputmethod.InputMethodSubtype;
 
 import java.util.ArrayList;
@@ -84,11 +85,14 @@
     }
 
     public static InputMethodSubtype[] createAdditionalSubtypesArray(String prefSubtypes) {
+        if (TextUtils.isEmpty(prefSubtypes)) {
+            return null;
+        }
         final String[] prefSubtypeArray = prefSubtypes.split(PREF_SUBTYPE_SEPARATOR);
         final ArrayList<InputMethodSubtype> subtypesList =
                 new ArrayList<InputMethodSubtype>(prefSubtypeArray.length);
-        for (int i = 0; i < prefSubtypeArray.length; i++) {
-            final InputMethodSubtype subtype = createAdditionalSubtype(prefSubtypeArray[i]);
+        for (final String prefSubtype : prefSubtypeArray) {
+            final InputMethodSubtype subtype = createAdditionalSubtype(prefSubtype);
             if (subtype.getNameResId() == SubtypeLocale.UNKNOWN_KEYBOARD_LAYOUT) {
                 // Skip unknown keyboard layout subtype. This may happen when predefined keyboard
                 // layout has been removed.
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index a4670da..37eced5 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -58,6 +58,9 @@
 
     public static final String QUERY_PARAMETER_MAY_PROMPT_USER = "mayPrompt";
     public static final String QUERY_PARAMETER_TRUE = "true";
+    public static final String QUERY_PARAMETER_DELETE_RESULT = "result";
+    public static final String QUERY_PARAMETER_SUCCESS = "success";
+    public static final String QUERY_PARAMETER_FAILURE = "failure";
 
     // Prevents this class to be accidentally instantiated.
     private BinaryDictionaryFileDumper() {
@@ -145,7 +148,7 @@
         final int MODE_MIN = COMPRESSED_CRYPTED_COMPRESSED;
         final int MODE_MAX = NONE;
 
-        final Uri wordListUri = getProviderUriBuilder(id).build();
+        final Uri.Builder wordListUriBuilder = getProviderUriBuilder(id);
         final String outputFileName = BinaryDictionaryGetter.getCacheFileName(id, locale, context);
 
         for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) {
@@ -154,6 +157,7 @@
             File outputFile = null;
             FileOutputStream outputStream = null;
             AssetFileDescriptor afd = null;
+            final Uri wordListUri = wordListUriBuilder.build();
             try {
                 // Open input.
                 afd = openAssetFileDescriptor(resolver, wordListUri);
@@ -190,9 +194,12 @@
                         break;
                     }
                 checkMagicAndCopyFileTo(new BufferedInputStream(inputStream), outputStream);
-                if (0 >= resolver.delete(wordListUri, null, null)) {
+                wordListUriBuilder.appendQueryParameter(QUERY_PARAMETER_DELETE_RESULT,
+                        QUERY_PARAMETER_SUCCESS);
+                if (0 >= resolver.delete(wordListUriBuilder.build(), null, null)) {
                     Log.e(TAG, "Could not have the dictionary pack delete a word list");
                 }
+                BinaryDictionaryGetter.removeFilesWithIdExcept(context, id, outputFile);
                 // Success! Close files (through the finally{} clause) and return.
                 return AssetFileAddress.makeFromFileName(outputFileName);
             } catch (Exception e) {
@@ -225,9 +232,11 @@
         // We could not copy the file at all. This is very unexpected.
         // I'd rather not print the word list ID to the log out of security concerns
         Log.e(TAG, "Could not copy a word list. Will not be able to use it.");
-        // If we can't copy it we should probably delete it to avoid trying to copy it over
-        // and over each time we open LatinIME.
-        if (0 >= resolver.delete(wordListUri, null, null)) {
+        // If we can't copy it we should warn the dictionary provider so that it can mark it
+        // as invalid.
+        wordListUriBuilder.appendQueryParameter(QUERY_PARAMETER_DELETE_RESULT,
+                QUERY_PARAMETER_FAILURE);
+        if (0 >= resolver.delete(wordListUriBuilder.build(), null, null)) {
             Log.e(TAG, "In addition, we were unable to delete it.");
         }
         return null;
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 5acd629..063243e 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -283,6 +283,39 @@
     }
 
     /**
+     * Remove all files with the passed id, except the passed file.
+     *
+     * If a dictionary with a given ID has a metadata change that causes it to change
+     * path, we need to remove the old version. The only way to do this is to check all
+     * installed files for a matching ID in a different directory.
+     */
+    public static void removeFilesWithIdExcept(final Context context, final String id,
+            final File fileToKeep) {
+        try {
+            final File canonicalFileToKeep = fileToKeep.getCanonicalFile();
+            final File[] directoryList = getCachedDirectoryList(context);
+            if (null == directoryList) return;
+            for (File directory : directoryList) {
+                // There is one directory per locale. See #getCachedDirectoryList
+                if (!directory.isDirectory()) continue;
+                final File[] wordLists = directory.listFiles();
+                if (null == wordLists) continue;
+                for (File wordList : wordLists) {
+                    final String fileId = getWordListIdFromFileName(wordList.getName());
+                    if (fileId.equals(id)) {
+                        if (!canonicalFileToKeep.equals(wordList.getCanonicalFile())) {
+                            wordList.delete();
+                        }
+                    }
+                }
+            }
+        } catch (java.io.IOException e) {
+            Log.e(TAG, "IOException trying to cleanup files : " + e);
+        }
+    }
+
+
+    /**
      * Returns the id associated with the main word list for a specified locale.
      *
      * Word lists stored in Android Keyboard's resources are referred to as the "main"
diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
index 4b77473..0a09c84 100644
--- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
@@ -149,7 +149,11 @@
         final Cursor cursor = mContext.getContentResolver().query(
                 Contacts.CONTENT_URI, PROJECTION_ID_ONLY, null, null, null);
         if (cursor != null) {
-            return cursor.getCount();
+            try {
+                return cursor.getCount();
+            } finally {
+                cursor.close();
+            }
         }
         return 0;
     }
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index b474a85..83658f7 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -2291,6 +2291,19 @@
                 break;
             }
         }
+
+        if (Keyboard.CODE_DELETE == primaryCode) {
+            // This is a stopgap solution to avoid leaving a high surrogate alone in a text view.
+            // In the future, we need to deprecate deteleSurroundingText() and have a surrogate
+            // pair-friendly way of deleting characters in InputConnection.
+            final InputConnection ic = getCurrentInputConnection();
+            if (null != ic) {
+                final CharSequence lastChar = ic.getTextBeforeCursor(1, 0);
+                if (!TextUtils.isEmpty(lastChar) && Character.isHighSurrogate(lastChar.charAt(0))) {
+                    ic.deleteSurroundingText(1, 0);
+                }
+            }
+        }
     }
 
     // receive ringer mode change and network state change.
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 9e478fa..c98a27b 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -503,27 +503,6 @@
         return true;
     }
 
-    // TODO: Use codepoint instead of char
-    private int searchBigramSuggestion(final char[] word, final int offset, final int length) {
-        // TODO This is almost O(n^2). Might need fix.
-        // search whether the word appeared in bigram data
-        int bigramSuggestSize = mBigramSuggestions.size();
-        for (int i = 0; i < bigramSuggestSize; i++) {
-            if (mBigramSuggestions.get(i).codePointCount() == length) {
-                boolean chk = true;
-                for (int j = 0; j < length; j++) {
-                    if (mBigramSuggestions.get(i).codePointAt(j) != word[offset+j]) {
-                        chk = false;
-                        break;
-                    }
-                }
-                if (chk) return i;
-            }
-        }
-
-        return -1;
-    }
-
     public void close() {
         final HashSet<Dictionary> dictionaries = new HashSet<Dictionary>();
         dictionaries.addAll(mUnigramDictionaries.values());
diff --git a/native/jni/src/correction.cpp b/native/jni/src/correction.cpp
index 5ae34cd..fe3f292 100644
--- a/native/jni/src/correction.cpp
+++ b/native/jni/src/correction.cpp
@@ -977,7 +977,7 @@
             }
             const int freq = freqArray[i];
             // Demote too short weak words
-            if (wordLength <= 4 && freq <= MAX_FREQ * 2 / 3 /* heuristic... */) {
+            if (wordLength <= 4 && freq <= SUPPRESS_SHORT_MULTIPLE_WORDS_THRESHOLD_FREQ) {
                 multiplyRate(100 * freq / MAX_FREQ, &totalFreq);
             }
             if (wordLength == 1) {
diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index dfc5238..19f8434 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -228,6 +228,8 @@
 
 #define TWO_WORDS_CORRECTION_WITH_OTHER_ERROR_THRESHOLD 0.35
 #define START_TWO_WORDS_CORRECTION_THRESHOLD 0.185
+/* heuristic... This should be changed if we change the unit of the frequency. */
+#define SUPPRESS_SHORT_MULTIPLE_WORDS_THRESHOLD_FREQ (MAX_FREQ * 58 / 100)
 
 #define MAX_DEPTH_MULTIPLIER 3
 
diff --git a/native/jni/src/unigram_dictionary.cpp b/native/jni/src/unigram_dictionary.cpp
index 3c826e9..8285828 100644
--- a/native/jni/src/unigram_dictionary.cpp
+++ b/native/jni/src/unigram_dictionary.cpp
@@ -503,8 +503,12 @@
                 freqArray, wordLengthArray, currentWordIndex + 1, isSpaceProximity, outputWord);
         if (DEBUG_DICT) {
             DUMP_WORD(outputWord, tempOutputWordLength);
-            AKLOGI("Split two words: %d, %d, %d, %d, (%d) %d", freqArray[0], freqArray[1], pairFreq,
-                    inputLength, wordLengthArray[0], tempOutputWordLength);
+            for (int i = 0; i < currentWordIndex + 1; ++i) {
+                AKLOGI("Split %d,%d words: freq = %d, length = %d", i, currentWordIndex + 1,
+                        freqArray[i], wordLengthArray[i]);
+            }
+            AKLOGI("Split two words: freq = %d, length = %d, %d, isSpace ? %d", pairFreq,
+                    inputLength, tempOutputWordLength, isSpaceProximity);
         }
         addWord(outputWord, tempOutputWordLength, pairFreq, queuePool->getMasterQueue());
     }
diff --git a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
index 81f744d..a9947c1 100644
--- a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
+++ b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
@@ -18,6 +18,9 @@
 
 import com.android.inputmethod.keyboard.Keyboard;
 
+import android.text.style.SuggestionSpan;
+import android.text.style.UnderlineSpan;
+
 public class BlueUnderlineTests extends InputTestsBase {
 
     public void testBlueUnderline() {
@@ -27,7 +30,7 @@
         type(STRING_TO_TYPE);
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
-        final Span span = new Span(mTextView.getText());
+        final SpanGetter span = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
         assertEquals("show blue underline, span start", EXPECTED_SPAN_START, span.mStart);
         assertEquals("show blue underline, span end", EXPECTED_SPAN_END, span.mEnd);
         assertEquals("show blue underline, span color", true, span.isAutoCorrectionIndicator());
@@ -44,7 +47,7 @@
         type(STRING_2_TO_TYPE);
         // We haven't have time to look into the dictionary yet, so the line should still be
         // blue to avoid any flicker.
-        final Span spanBefore = new Span(mTextView.getText());
+        final SpanGetter spanBefore = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
         assertEquals("extend blue underline, span start", EXPECTED_SPAN_START, spanBefore.mStart);
         assertEquals("extend blue underline, span end", EXPECTED_SPAN_END, spanBefore.mEnd);
         assertEquals("extend blue underline, span color", true,
@@ -52,14 +55,15 @@
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
         // Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span
-        final Span spanAfter = new Span(mTextView.getText());
+        final SpanGetter spanAfter = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
         assertNull("hide blue underline", spanAfter.mSpan);
     }
 
     public void testBlueUnderlineOnBackspace() {
         final String STRING_TO_TYPE = "tgis";
-        final int EXPECTED_SPAN_START = 0;
-        final int EXPECTED_SPAN_END = 4;
+        final int EXPECTED_SUGGESTION_SPAN_START = -1;
+        final int EXPECTED_UNDERLINE_SPAN_START = 0;
+        final int EXPECTED_UNDERLINE_SPAN_END = 4;
         type(STRING_TO_TYPE);
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
@@ -72,13 +76,14 @@
         type(Keyboard.CODE_DELETE);
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
-        final Span span = new Span(mTextView.getText());
-        assertEquals("show blue underline after backspace, span start",
-                EXPECTED_SPAN_START, span.mStart);
-        assertEquals("show blue underline after backspace, span end",
-                EXPECTED_SPAN_END, span.mEnd);
-        assertEquals("show blue underline after backspace, span color", true,
-                span.isAutoCorrectionIndicator());
+        final SpanGetter suggestionSpan = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
+        assertEquals("show no blue underline after backspace, span start should be -1",
+                EXPECTED_SUGGESTION_SPAN_START, suggestionSpan.mStart);
+        final SpanGetter underlineSpan = new SpanGetter(mTextView.getText(), UnderlineSpan.class);
+        assertEquals("should be composing, so should have an underline span",
+                EXPECTED_UNDERLINE_SPAN_START, underlineSpan.mStart);
+        assertEquals("should be composing, so should have an underline span",
+                EXPECTED_UNDERLINE_SPAN_END, underlineSpan.mEnd);
     }
 
     public void testBlueUnderlineDisappearsWhenCursorMoved() {
@@ -96,7 +101,7 @@
         mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
-        final Span span = new Span(mTextView.getText());
+        final SpanGetter span = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
         assertNull("blue underline removed when cursor is moved", span.mSpan);
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTests.java b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
index 6c3cb16..f1ccfdd 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTests.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
@@ -28,7 +28,7 @@
 
     public void testPickSuggestionThenBackspace() {
         final String WORD_TO_TYPE = "this";
-        final String EXPECTED_RESULT = "this";
+        final String EXPECTED_RESULT = "thi";
         type(WORD_TO_TYPE);
         pickSuggestionManually(0, WORD_TO_TYPE);
         mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
@@ -40,7 +40,7 @@
     public void testPickAutoCorrectionThenBackspace() {
         final String WORD_TO_TYPE = "tgis";
         final String WORD_TO_PICK = "this";
-        final String EXPECTED_RESULT = "tgis";
+        final String EXPECTED_RESULT = "thi";
         type(WORD_TO_TYPE);
         // Choose the auto-correction, which is always in position 0. For "tgis", the
         // auto-correction should be "this".
@@ -55,7 +55,7 @@
 
     public void testPickTypedWordOverAutoCorrectionThenBackspace() {
         final String WORD_TO_TYPE = "tgis";
-        final String EXPECTED_RESULT = "tgis";
+        final String EXPECTED_RESULT = "tgi";
         type(WORD_TO_TYPE);
         // Choose the typed word, which should be in position 1 (because position 0 should
         // be occupied by the "this" auto-correction, as checked by testAutoCorrect())
@@ -71,7 +71,7 @@
     public void testPickDifferentSuggestionThenBackspace() {
         final String WORD_TO_TYPE = "tgis";
         final String WORD_TO_PICK = "thus";
-        final String EXPECTED_RESULT = "tgis";
+        final String EXPECTED_RESULT = "thu";
         type(WORD_TO_TYPE);
         // Choose the second suggestion, which should be in position 2 and should be "thus"
         // when "tgis is typed.
diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
index c73a931..eb47fd5 100644
--- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
@@ -24,6 +24,7 @@
 import android.test.ServiceTestCase;
 import android.text.InputType;
 import android.text.SpannableStringBuilder;
+import android.text.style.CharacterStyle;
 import android.text.style.SuggestionSpan;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -57,18 +58,19 @@
             new HashMap<String, InputMethodSubtype>();
 
     // A helper class to ease span tests
-    public static class Span {
+    public static class SpanGetter {
         final SpannableStringBuilder mInputText;
-        final SuggestionSpan mSpan;
+        final CharacterStyle mSpan;
         final int mStart;
         final int mEnd;
         // The supplied CharSequence should be an instance of SpannableStringBuilder,
-        // and it should contain exactly zero or one SuggestionSpan. Otherwise, an exception
+        // and it should contain exactly zero or one span. Otherwise, an exception
         // is thrown.
-        public Span(final CharSequence inputText) {
+        public SpanGetter(final CharSequence inputText,
+                final Class<? extends CharacterStyle> spanType) {
             mInputText = (SpannableStringBuilder)inputText;
-            final SuggestionSpan[] spans =
-                    mInputText.getSpans(0, mInputText.length(), SuggestionSpan.class);
+            final CharacterStyle[] spans =
+                    mInputText.getSpans(0, mInputText.length(), spanType);
             if (0 == spans.length) {
                 mSpan = null;
                 mStart = -1;
@@ -78,11 +80,12 @@
                 mStart = mInputText.getSpanStart(mSpan);
                 mEnd = mInputText.getSpanEnd(mSpan);
             } else {
-                throw new RuntimeException("Expected one SuggestionSpan, found " + spans.length);
+                throw new RuntimeException("Expected one span, found " + spans.length);
             }
         }
         public boolean isAutoCorrectionIndicator() {
-            return 0 != (SuggestionSpan.FLAG_AUTO_CORRECTION & mSpan.getFlags());
+            return (mSpan instanceof SuggestionSpan) &&
+                    0 != (SuggestionSpan.FLAG_AUTO_CORRECTION & ((SuggestionSpan)mSpan).getFlags());
         }
     }
 
