diff --git a/i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst b/i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst
new file mode 100644
index 0000000000000000000000000000000000000000..149ef67e3eaecc2ce3a6ea95b50360339547748a
--- /dev/null
+++ b/i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst
@@ -0,0 +1,106 @@
+{% trans -%}
+==============
+Syndie 1.105b Release
+==============
+{%- endtrans %}
+.. meta::
+   :date: 2014-01-21
+   :category: release
+   :excerpt: {% trans %}Update to HSQLDB 2.3.1{% endtrans %}
+
+{% trans -%}
+This is the first stable release since February 2013.
+It is essentially the same as 1.104b-7-rc, with some translation updates.
+{%- endtrans %}
+
+{% trans -%}
+All binaries and source packages are at `syndie.de`_ and `syndie.i2p`_.
+Plugins are available at `plugins.i2p`_ and `stats.i2p`_.
+{%- endtrans %}
+
+{% trans -%}
+For those of you upgrading from 1.103b, you will find syndie startup and shutdown much faster due to the new version of HSQLDB.
+{%- endtrans %}
+
+{% trans -%}
+If you have a large database or an identity you wish to preserve,
+you may wish to back up your entire ~/.syndie directory before you start.
+The upgrade process does make its own backup, however you may find it easier to use your own backup if the upgrade fails.
+{%- endtrans %}
+
+{% trans -%}
+Upgrades from 1.103b may fail for some people due to database corruption due to bugs in the old HSQLDB.
+Unfortunately, we don't know how to fix it.
+Your alternatives are to start over with a clean database, or stay with 1.103b forever.
+Sorry about that.
+{%- endtrans %}
+
+.. _`stats.i2p`: http://stats.i2p/i2p/plugins/
+.. _`plugins.i2p`: http://plugins.i2p/plugins/syndie/
+.. _`syndie.i2p`: http://www.syndie.i2p/download.html
+.. _`syndie.de`: https://syndie.de/download
+
+{% trans -%}
+As usual, we recommend that you update to this release.
+The best way to maintain security and help the network is to run the latest release.
+{%- endtrans %}
+
+**{% trans %}RELEASE DETAILS{% endtrans %}**
+
+
+**{% trans %}Bug Fixes{% endtrans %}**
+
+- Fix NPE in SyndieTreeListener
+- Fix, or maybe just move, NPE in addURI/getURI
+
+**{% trans %}GUI Improvements and Fixes{% endtrans %}**
+
+- Don't open message view tab for unreadable messages or stub messages
+- Don't fail on duplicate cancel requests
+- Fix BrowseForumTab text on forum with blank name
+- For consistency, always put cancel button to the left of OK/Save
+- Move message date to date column in syndicator tab
+- Better formatting of file sizes in Syndicator tab
+- Clean up internal error popup
+- Catch dispose errors when changing translation or theme
+- Add menu item to delete PBE messages and forums
+- Add keyboard shortcuts in message view tab
+- Fix dup archive in Syndicator Tab after rename
+- Don't display PBE messages after deletion
+- Update to SWT 3.8.2 20130131
+
+**{% trans %} Syndication{% endtrans %}**
+
+- Improve import failure propagation and display
+- More cleanup of Importer and enhanced ImportResults by passing missing key and PBE indications in result code
+- Simplification of SyncArchive.IncomingAction using Results
+- Handle and display "stub" cancel messages correctly
+- Early check for banned target in ImportPost
+- Reduce default pull policy to 14 days
+- Only pull indexes needed for pulled messages
+- Fetch messages newest-first
+
+**{% trans %}Database{% endtrans %}**
+
+- Update to DB version 25
+- Add LOBs for attachments and pages
+- Increase length limits on cancelledURI, headerValue, and others
+- Implement offline database backup
+- Backup database before upgrading to hsqldb 2.x
+- Add code to migrate large things to LOBs
+- Enable migration of large attachments and pages to LOBs
+- Implement retrieval of pages and attachments from LOBs
+- Implement getAttachmentAsStream for real (unused yet)
+- Implement storage to LOBs in ImportPost
+- Sleep a while before shutdown compact
+- Shutdown compact immediately after upgrade, then reconnect, as recommended by hsqldb
+- Use attachment size from messageAttachment table, not actual size from messageAttachmentData table
+
+**{% trans %}Other{% endtrans %}**
+
+- Use DataHelper.loadProps() to deserialize properties UTF-8-safely
+- Add script for the hsqldb database manager tool
+- More code refactoring
+- {% trans %}New translations{% endtrans %}: Polish, Portuguese, Romainian
+- {% trans %}Translation updates{% endtrans %}
+
diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html
index 5b3e9b480ab7450ca3cd06209d0fd3e3920a275d..456cf8a5a685ba5da8af18afffde11fe342e3cfb 100644
--- a/i2p2www/pages/downloads/list.html
+++ b/i2p2www/pages/downloads/list.html
@@ -2,7 +2,7 @@
 {% block title %}{{ _('Download') }}{% endblock %}
 {% set i2pinstall_windows_sig = '95e7fb6b62efdc9d65b818360795380628ed8ceb396d5ccf5f263ea4d2bc8d79' %}
 {% set i2pinstall_jar_sig     = '171ff170a4d97dd9ef0e352471448e0254cfac5c9e91bb07377b41790aa9cd92' %}
-{% set i2p_android_sig        = '61a2e1c602680b852ae6e0a391cf6a35860e273437a2786ea00fa731a7d3d427' %}
+{% set i2p_android_sig        = 'e74f8d4d541fb89586f9adcfe9d41ac28e8c6aae2c29798cacfe33f9b5752dfc' %}
 {% set i2psource_sig          = '20bcd1a62101b15b423ae6dd81a76b1806d67a28a5bf0f341803a7a61178d494' %}
 {% set i2pupdate_sig          = '4e82dce86efccc86759ee010da058af23d2cbecbfccf5ab3555e9ccb4ccd912e' %}
 {% block content %}
@@ -120,7 +120,7 @@ or type <tt>java -version</tt> at your command prompt.
   </div>
   <div class="details">
   <div class="file">
-    <a href="http://{{ i2pconv('stats.i2p') }}/i2p.apk">i2p-android-0.9.9-0_b0-API8.apk</a>
+    <a href="http://{{ i2pconv('stats.i2p') }}/i2p.apk">i2p-android-0.9.10-0_b1-API8.apk</a>
     <div class="sig">
       (SHA256 <code>{{ i2p_android_sig }}</code>
       )
@@ -132,6 +132,15 @@ or type <tt>java -version</tt> at your command prompt.
     <a href="{{ str4durl }}">str4d's eepsite</a>.
     {%- endtrans %}
     <div class="warning">
+      {% trans -%}
+      The I2P Android app is in development and does NOT currently provide strong anonymity.
+      {%- endtrans %}
+      {% trans -%}
+      Requires Android 2.2 (Froyo) or higher.
+      {%- endtrans %}
+      {% trans -%}
+      512 MB RAM minimum; 1 GB recommended.
+      {%- endtrans %}
       {% trans -%}
       The release and dev versions of the I2P APK are not compatible, as they
       are signed by zzz and str4d respectively. Uninstall one before installing
diff --git a/i2p2www/pages/site/about/team.html b/i2p2www/pages/site/about/team.html
index ec5789fede12bb87364939837d3e4e2d8b117e53..d8044f6b4921f0e11d9de3e5751ca806966051d9 100644
--- a/i2p2www/pages/site/about/team.html
+++ b/i2p2www/pages/site/about/team.html
@@ -10,7 +10,7 @@ network.
 
 <table border="0">
 <tr>
-	<td valign="top" rowspan="20"><b>{{ _('Admin') }}</b></td>
+	<td valign="top" rowspan="21"><b>{{ _('Admin') }}</b></td>
 	<td valign="top"><b>{{ _('Project Manager') }}</b></td>
 	<td valign="top">zzz</td>
 	<td valign="top"><i>{{ _('point of contact of last resort') }}</i></td>
@@ -105,6 +105,11 @@ network.
 	<td valign="top">eche|on</td>
 	<td valign="top"><i>{{ _('manage router console news feed') }}</i></td>
 </tr>
+<tr>
+	<td valign="top"><b>{{ _('Backup News Admin') }}</b></td>
+	<td valign="top">psi</td>
+	<td valign="top"><i>{{ _('manage the backup news feed') }}</i></td>
+</tr>
 <tr>
 	<td valign="top"><b>{{ _('Director of passion') }}</b></td>
 	<td valign="top" class="blue">[{{ _('vacant') }}]</td>
diff --git a/i2p2www/pages/site/docs/spec/i2np.html b/i2p2www/pages/site/docs/spec/i2np.html
index 8c9445cf0f2c6578c5683f78060ac2c20319529b..ade4df7409436e8e7ea71e1d8a92731e353c3bb0 100644
--- a/i2p2www/pages/site/docs/spec/i2np.html
+++ b/i2p2www/pages/site/docs/spec/i2np.html
@@ -47,7 +47,7 @@ Short (SSU, 5 bytes):
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 type :: `Integer`
         length -> 1 byte
         
@@ -84,7 +84,8 @@ data :: Data
         length -> $size bytes
         
         purpose -> actual message contents
-{% endhighlight %}
+</pre>
+
 <h4>Notes</h4>
 <ul><li>
 When transmitted over <a href="{{ site_url('docs/transport/ssu') }}">SSU</a>,
@@ -198,7 +199,7 @@ ElGamal and AES encrypted:
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 unencrypted:
 
 receive_tunnel :: `TunnelId`
@@ -259,7 +260,7 @@ encrypted_data :: ElGamal and AES encrypted data
 
 total length: 528
 
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul><li>
@@ -293,7 +294,7 @@ unencrypted:
 +----+----+----+----+----+----+----+----+
 {% endhighlight %}
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 unencrypted:
 bytes 0-31   : SHA-256 Hash of bytes 32-527
 bytes 32-526 : random data
@@ -304,7 +305,7 @@ bytes 0-527: AES-encrypted record(note: same size as BuildRequestRecord)
 
 total length: 528
 
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul><li>
@@ -337,8 +338,8 @@ unencrypted:
 <h4>Definition</h4>
 <pre>
 unencrypted:
-Delivery Instructions :: <a href="{{ site_url('docs/spec/tunnel-message') }}#delivery">as defined here</a>
-       Length varies but is typically 39, 43, or 47 bytes
+Delivery Instructions :: as defined below
+       Length varies but is typically 1, 33, or 37 bytes
 
 I2NP Message :: Any I2NP Message
 
@@ -377,13 +378,14 @@ Certificate :: Always NULL in the current implementation (3 bytes total, all zer
 <h3 id="struct_DeliveryInstructions">Garlic Clove Delivery Instructions</h3>
 
 <p>
+This specification is for Delivery Instructions inside Garlic Cloves only.
 Note that "Delivery Instructions" are also used inside
 Tunnel Messages,
 where the format is significantly different.
 See the
 <a href="{{ site_url('docs/spec/tunnel-message') }}#delivery">Tunnel Message documentation</a>
-for more details.
-Do NOT use the following specification for Tunnel Message Clove Delivery Instructions!
+for details.
+Do NOT use the following specification for Tunnel Message Delivery Instructions!
 
 
 {% highlight lang='dataspec' %}
@@ -587,7 +589,8 @@ reply gateway:
               This is the router hash of the inbound gateway of the tunnel the response should be sent to
 
 data:
-     If type == 0, data is a 2-byte integer specifying the number of bytes that follow, followed by a gzip-compressed `RouterInfo`.
+     If type == 0, data is a 2-byte integer specifying the number of bytes that follow,
+                   followed by a gzip-compressed `RouterInfo`.
      If type == 1, data is an uncompressed `LeaseSet`.
 </pre>
 
@@ -660,7 +663,7 @@ The key is the "real" hash of the RouterIdentity or Destination, NOT the routing
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 key ::
     32 bytes
     SHA256 hash of the object to lookup
@@ -717,7 +720,7 @@ reply_tags ::
      one or more 32 byte `SessionTags` (typically one)
      only included if encryptionFlag == 1, only as of release 0.9.7
 
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul><li>
@@ -781,7 +784,7 @@ The lookup key and exclude keys are the "real" hashes, NOT routing keys.
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 key ::
     32 bytes
     SHA256 of the object being searched
@@ -797,7 +800,7 @@ peer_hash ($num entries) ::
 from ::
      32 bytes
      SHA256 of the `RouterInfo` of the router this reply was sent from
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul><li>
@@ -831,7 +834,7 @@ The lookup key, peer hashes, and from hash are "real" hashes, NOT routing keys.
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 msg_id ::
        4 bytes
        unique ID of the message we deliver the DeliveryStatus for (see common I2NP header for details)
@@ -839,7 +842,7 @@ msg_id ::
 time_stamp :: Date
              8 bytes
              time the message was successfully created or delivered
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul><li>
@@ -894,7 +897,7 @@ unencrypted data:
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 Encrypted:
 
 length ::
@@ -919,7 +922,7 @@ Message_ID :: 4 byte `Integer`
 
 Expiration :: `Date` (8 bytes)
 
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul>
@@ -969,7 +972,7 @@ Expiration :: `Date` (8 bytes)
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 tunnelId ::
          4 byte `TunnelID`
          identifies the tunnel this message is directed at
@@ -977,7 +980,7 @@ tunnelId ::
 data ::
      1024 bytes
      payload data.. fixed to 1024 bytes
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul>
@@ -1001,7 +1004,7 @@ data ::
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 tunnelId ::
          4 byte `TunnelID`
          identifies the tunnel this message is directed at
@@ -1013,7 +1016,7 @@ length ::
 data ::
      $length bytes
      actual payload of this message
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul>
@@ -1038,7 +1041,7 @@ data ::
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 length ::
        4 bytes
        length of the payload
@@ -1046,7 +1049,7 @@ length ::
 data ::
      $length bytes
      actual payload of this message
-{% endhighlight %}
+</pre>
 
 <h3 id="msg_TunnelBuild">TunnelBuild</h3>
 {% highlight lang='dataspec' %}
@@ -1066,11 +1069,11 @@ data ::
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 Just 8 `BuildRequestRecords` attached together
 record size: 528 bytes
 total size: 8*528 = 4224 bytes
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul>
@@ -1102,7 +1105,7 @@ same format as `TunnelBuild` message, with `BuildResponseRecords`
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 Same format as TunnelBuildMessage, except for the addition of an "num" field in front and $num number of Build Request Records instead of 8
 
 num ::
@@ -1111,7 +1114,7 @@ num ::
 
 record size: 528 bytes
 total size: 1 + $num*528
-{% endhighlight %}
+</pre>
 
 <h4>Notes</h4>
 <ul>
diff --git a/i2p2www/pages/site/docs/spec/tunnel-message.html b/i2p2www/pages/site/docs/spec/tunnel-message.html
index 09fbd13d4f14b2b20825b369f4202cc057f5172b..adf45b9499122cc0310f26ee043dbe96bacddf71 100644
--- a/i2p2www/pages/site/docs/spec/tunnel-message.html
+++ b/i2p2www/pages/site/docs/spec/tunnel-message.html
@@ -79,7 +79,7 @@ These are the contents of a tunnel data message when decrypted.
 +                   +----+----+----+----+
 |                   |     Checksum      |
 +----+----+----+----+----+----+----+----+
-|          nonzero padding..            |
+|          nonzero padding...           |
 ~                                       ~
 |                                       |
 +                                  +----+
@@ -164,18 +164,19 @@ is either not fragmented or this is the first fragment in the message.  If it is
 set, this is a follow on fragment.</p>
 
 <p>
+This specification is for Delivery Instructions inside Tunnel Messages only.
 Note that "Delivery Instructions" are also used inside
 <a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Cloves</a>,
 where the format is significantly different.
 See the
-<a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Clove documentation</a>
-for more details.
+<a href="{{ site_url('docs/spec/i2np') }}#struct_DeliveryInstructions">I2NP documentation</a>
+for details.
 Do NOT use the following specification for Garlic Clove Delivery Instructions!
 
 
 <h3>First Fragment Delivery Instructions</h3>
 <p>If the MSB of the first byte is 0, this is an initial I2NP message fragment,
-or a complete I2NP message, and the instructions are:</p>
+or a complete (unfragmented) I2NP message, and the instructions are:</p>
 {% highlight lang='dataspec' %}
 +----+----+----+----+----+----+----+----+
 |flag|  Tunnel ID (opt)  |              |
@@ -186,9 +187,9 @@ or a complete I2NP message, and the instructions are:</p>
 +                                       +
 |                                       |
 +                        +--------------+
-|                        |dly | Msg...  |
+|                        |dly | Message  
 +----+----+----+----+----+----+----+----+
-|..ID(opt)| ext opts... (opt) |   size  |
+ ID (opt) |extended opts (opt)|  size   |
 +----+----+----+----+----+----+----+----+
 {% endhighlight %}
 
@@ -197,9 +198,9 @@ or a complete I2NP message, and the instructions are:</p>
 flag:
        1 byte
        Bit order: 76543210
-       bit 7: 0 to specify an initial fragment
+       bit 7: 0 to specify an initial fragment or an unfragmented message
        bits 6-5: delivery type
-                 0x0 = LOCAL, 0x01 = TUNNEL, 0x02 = ROUTER, 0x03 = unused
+                 0x0 = LOCAL, 0x01 = TUNNEL, 0x02 = ROUTER, 0x03 = unused, invalid
                  Note: LOCAL is used for inbound tunnels only, unimplemented for outbound tunnels
        bit 4: delay included?  Unimplemented, always 0
                            If 1, a delay byte is included
@@ -231,6 +232,7 @@ Delay:
 Message ID:
        4 bytes
        Optional, present if this message is the first of 2 or more fragments
+          (i.e. if the fragmented bit is 1)
        An ID that uniquely identifies all fragments as belonging to a single message
        (the current implementation uses the <a href="{{ site_url('docs/spec/i2np') }}#struct_header">I2NP Message ID</a>)
 
@@ -261,13 +263,14 @@ Total length: Typical length is:
 {% endhighlight %}
 
 <h4>Definition</h4>
-{% highlight lang='dataspec' %}
+<pre>
 frag ::
        1 byte
+       Bit order: 76543210
        binary 1nnnnnnd
-              the first bit is 1 to indicate this is a follow-on fragment
-              nnnnnn is the 6 bit fragment number from 1 to 63
-              d is 1 to indicate the last fragment, 0 otherwise
+              bit 7: 1 to indicate this is a follow-on fragment
+              bits 6-1: nnnnnn is the 6 bit fragment number from 1 to 63
+              bit 0: d is 1 to indicate the last fragment, 0 otherwise
 
 Message ID ::
        4 bytes
@@ -281,8 +284,7 @@ size ::
        valid values: 1 to 996
 
 total length: 7 bytes
-
-{% endhighlight %}
+</pre>
 
 <h3><a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2np/DeliveryInstructions.html">Delivery Instructions Javadoc</a></h3>