fluo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ktur...@apache.org
Subject [incubator-fluo-website] branch asf-site updated: Jekyll build from gh-pages:8893487
Date Thu, 29 Jun 2017 17:51:37 GMT
This is an automated email from the ASF dual-hosted git repository.

kturner pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-fluo-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new e82600b  Jekyll build from gh-pages:8893487
e82600b is described below

commit e82600b85a5826b205f3f053413163bd0b9aaa47
Author: Keith Turner <kturner@apache.org>
AuthorDate: Thu Jun 29 13:51:04 2017 -0400

    Jekyll build from gh-pages:8893487
    
    Fluo Recipes 1.1.0 rel notes (#62)
    
    * Fluo Recipes 1.1.0 rel notes
    
    * code review update
    
    * referenced issues related to major change
---
 api/index.html                                     |   1 +
 blog/2016/11/10/immutable-bytes/index.html         |   4 +-
 blog/2016/12/22/spark-load/index.html              |  10 +-
 docs/fluo-recipes/1.0.0-beta-1/cfm/index.html      |   2 +-
 .../1.0.0-beta-1/export-queue/index.html           |   2 +-
 docs/fluo-recipes/1.0.0-beta-1/index.html          |   2 +-
 .../1.0.0-beta-1/recording-tx/index.html           |   2 +-
 .../1.0.0-beta-1/serialization/index.html          |   2 +-
 .../1.0.0-beta-1/table-optimization/index.html     |   2 +-
 .../fluo-recipes/1.0.0-beta-1/transient/index.html |   2 +-
 .../1.0.0-beta-2/accumulo-export/index.html        |   2 +-
 docs/fluo-recipes/1.0.0-beta-2/cfm/index.html      |   2 +-
 .../1.0.0-beta-2/export-queue/index.html           |   2 +-
 docs/fluo-recipes/1.0.0-beta-2/index.html          |   2 +-
 .../1.0.0-beta-2/recording-tx/index.html           |   2 +-
 .../1.0.0-beta-2/row-hasher/index.html             |   2 +-
 .../1.0.0-beta-2/serialization/index.html          |   2 +-
 .../1.0.0-beta-2/table-optimization/index.html     |   2 +-
 docs/fluo-recipes/1.0.0-beta-2/testing/index.html  |   2 +-
 .../fluo-recipes/1.0.0-beta-2/transient/index.html |   2 +-
 .../accumulo-export-queue/index.html               |  10 +-
 docs/fluo-recipes/1.0.0-incubating/cfm/index.html  |   2 +
 .../1.0.0-incubating/export-queue/index.html       |   4 +-
 docs/fluo-recipes/1.0.0-incubating/index.html      |   2 +
 .../1.0.0-incubating/recording-tx/index.html       |   2 +
 .../1.0.0-incubating/row-hasher/index.html         |   2 +
 .../1.0.0-incubating/serialization/index.html      |   4 +-
 .../1.0.0-incubating/table-optimization/index.html |   6 +-
 .../1.0.0-incubating/testing/index.html            |   6 +-
 .../1.0.0-incubating/transient/index.html          |   6 +-
 .../accumulo-export-queue/index.html               | 236 +++++++++++++
 .../combine-queue}/index.html                      | 219 +++++-------
 .../export-queue/index.html                        | 247 +++++++------
 .../index.html                                     |  34 +-
 .../recording-tx/index.html                        |   2 +-
 .../row-hasher/index.html                          |   4 +-
 .../serialization/index.html                       |   4 +-
 .../testing => 1.1.0-incubating/spark}/index.html  |  23 +-
 .../table-optimization/index.html                  |   8 +-
 .../testing/index.html                             |   6 +-
 .../transient/index.html                           |  10 +-
 docs/fluo/1.0.0-incubating/applications/index.html |  14 +-
 docs/fluo/1.0.0-incubating/metrics/index.html      |   4 +-
 docs/fluo/1.1.0-incubating/applications/index.html |  16 +-
 docs/fluo/1.1.0-incubating/metrics/index.html      |   4 +-
 docs/index.html                                    |   1 +
 feed.xml                                           | 305 ++++++++++++++--
 index.html                                         |  12 +-
 news/index.html                                    |   8 +
 release/fluo-recipes-1.1.0-incubating/index.html   | 388 +++++++++++++++++++++
 release/index.html                                 |   3 +
 tour/application-configuration/index.html          |  10 +-
 tour/basic-read-write/index.html                   |   4 +-
 tour/data-pojos/index.html                         |  12 +-
 tour/loader-executer/index.html                    |   6 +-
 tour/multi-get/index.html                          |  12 +-
 tour/scanning/index.html                           |   6 +-
 57 files changed, 1290 insertions(+), 401 deletions(-)

diff --git a/api/index.html b/api/index.html
index 595dbec..68ebf8f 100644
--- a/api/index.html
+++ b/api/index.html
@@ -122,6 +122,7 @@
 <h4 id="apache-fluo-recipes-api">Apache Fluo Recipes API</h4>
 
 <ul>
+  <li>1.1.0-incubating: <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/" target="_blank">core</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/" target="_blank">accumulo</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-kryo/1.1.0-incubating/" target="_blank">kryo</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-spark/1.1.0-incubating/" target="_blank">spark</a>, <a href="https [...]
   <li>1.0.0-incubating: <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/" target="_blank">core</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/" target="_blank">accumulo</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-kryo/1.0.0-incubating/" target="_blank">kryo</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-spark/1.0.0-incubating/" target="_blank">spark</a>, <a href="https [...]
 </ul>
 
diff --git a/blog/2016/11/10/immutable-bytes/index.html b/blog/2016/11/10/immutable-bytes/index.html
index 6555d47..3e5e45d 100644
--- a/blog/2016/11/10/immutable-bytes/index.html
+++ b/blog/2016/11/10/immutable-bytes/index.html
@@ -123,8 +123,8 @@ modified any of the key values.</p>
 
 <p>While designing the Fluo API we were uncertain about making Fluo’s basic <a href="/tour/data-pojos/">POJOs</a> mutable or
 immutable.  In the end we decided to go with immutable types to make writing correct Fluo code
-easier.  One of the POJOs we created was <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a>,  an immutable wrapper around a byte array.  We
-also created <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html">BytesBuilder</a>, which is analogous to StringBuilder, and makes it easy and efficient
+easier.  One of the POJOs we created was <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a>,  an immutable wrapper around a byte array.  We
+also created <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html">BytesBuilder</a>, which is analogous to StringBuilder, and makes it easy and efficient
 to construct Bytes.</p>
 
 <h3 id="what-about-the-copies">What about the copies?</h3>
diff --git a/blog/2016/12/22/spark-load/index.html b/blog/2016/12/22/spark-load/index.html
index 13df2af..4eeddaf 100644
--- a/blog/2016/12/22/spark-load/index.html
+++ b/blog/2016/12/22/spark-load/index.html
@@ -121,11 +121,11 @@ related data. This blog post offers some tips to help you get started writing to
 
 <p>Spark automatically serializes Java objects that are needed for remote execution.  When trying to
 use Fluo with Spark its important to understand what will serialize properly and what will not.
-Classes used to load data into Fluo like <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a> and <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html">LoaderExecutor</a> are not suitable for
+Classes used to load data into Fluo like <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a> and <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html">LoaderExecutor</a> are not suitable for
 serialization.  These classes may have thread pools, resources in Zookeeper, transactions that are
 committing in the background, etc .  Therefore these classes must be instantiated at each remote process
 Spark creates.  One way to do this is with Spark’s <code class="highlighter-rouge">foreachParition</code> method.  This method will
-execute code locally at each RDD partition. Within each partition, a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html">LoaderExecutor</a>
+execute code locally at each RDD partition. Within each partition, a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html">LoaderExecutor</a>
 can be created.  That’s what the example below shows.</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code> 
@@ -180,7 +180,7 @@ partitioning methods in Spark will not accomplish this.</p>
 <p>When following the bulk load approach, you would write <a href="http://accumulo.apache.org/1.8/apidocs/org/apache/accumulo/core/data/Key.html">Key</a> and <a href="http://accumulo.apache.org/1.8/apidocs/org/apache/accumulo/core/data/Value.html">Value</a> objects using the
 <a href="http://accumulo.apache.org/1.8/apidocs/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormat.html">AccumuloFileOutputFormat</a>. Fluo provides the <a href="https://github.com/apache/incubator-fluo/blob/rel/fluo-1.0.0-incubating/modules/mapreduce/src/main/java/org/apache/fluo/mapreduce/FluoKeyValueGenerator.java">FluoKeyValueGenerator</a> to create key/values in the
 Fluo data format.  Fluo Recipes builds on this and provides code that makes it easy to bulk import
-into Accumulo.  The <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-spark/1.0.0-incubating/org/apache/fluo/recipes/spark/FluoSparkHelper.html#bulkImportRcvToFluo-org.apache.spark.api.java.JavaPairRDD-org.apache.fluo.recipes.spark.FluoSparkHelper.BulkImportOptions-">FluoSparkHelper.bulkImportRcvToFluo()</a> method will do the following :</p>
+into Accumulo.  The <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-spark/1.1.0-incubating/org/apache/fluo/recipes/spark/FluoSparkHelper.html#bulkImportRcvToFluo-org.apache.spark.api.java.JavaPairRDD-org.apache.fluo.recipes.spark.FluoSparkHelper.BulkImportOptions-">FluoSparkHelper.bulkImportRcvToFluo()</a> method will do the following :</p>
 
 <ul>
   <li>Repartition data using the split points in the Fluo table</li>
@@ -190,8 +190,8 @@ into Accumulo.  The <a href="https://static.javadoc.io/org.apache.fluo/fluo-reci
 </ul>
 
 <p>The <a href="https://github.com/astralway/webindex">Webindex</a> example uses bulk load to initialize its Fluo table using the code in Fluo Recipes.
-Webindex uses multiple <a href="/docs/fluo-recipes/1.0.0-incubating/cfm/">Collision Free Maps</a> and initializes them using
-<a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/map/CollisionFreeMap.html#getInitializer-java.lang.String-int-org.apache.fluo.recipes.core.serialization.SimpleSerializer-">CollisionFreeMap.getInitializer()</a>.  Webindex uses Spark to initialize the Fluo table with
+Webindex uses multiple <a href="/docs/fluo-recipes/1.1.0-incubating/cfm/">Collision Free Maps</a> and initializes them using
+<a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/map/CollisionFreeMap.html#getInitializer-java.lang.String-int-org.apache.fluo.recipes.core.serialization.SimpleSerializer-">CollisionFreeMap.getInitializer()</a>.  Webindex uses Spark to initialize the Fluo table with
 historical data.  Webindex also uses Spark to execute load transactions in parallel for
 incrementally loading data.</p>
 
diff --git a/docs/fluo-recipes/1.0.0-beta-1/cfm/index.html b/docs/fluo-recipes/1.0.0-beta-1/cfm/index.html
index b7f16ce..9afed3d 100644
--- a/docs/fluo-recipes/1.0.0-beta-1/cfm/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-1/cfm/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-1/export-queue/index.html b/docs/fluo-recipes/1.0.0-beta-1/export-queue/index.html
index f39f86c..0e8b09b 100644
--- a/docs/fluo-recipes/1.0.0-beta-1/export-queue/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-1/export-queue/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-1/index.html b/docs/fluo-recipes/1.0.0-beta-1/index.html
index 58a0bda..54ced56 100644
--- a/docs/fluo-recipes/1.0.0-beta-1/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-1/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-1/recording-tx/index.html b/docs/fluo-recipes/1.0.0-beta-1/recording-tx/index.html
index 042164e..ec30efd 100644
--- a/docs/fluo-recipes/1.0.0-beta-1/recording-tx/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-1/recording-tx/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-1/serialization/index.html b/docs/fluo-recipes/1.0.0-beta-1/serialization/index.html
index 605252f..7bb7637 100644
--- a/docs/fluo-recipes/1.0.0-beta-1/serialization/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-1/serialization/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-1/table-optimization/index.html b/docs/fluo-recipes/1.0.0-beta-1/table-optimization/index.html
index 1f048d5..11646d5 100644
--- a/docs/fluo-recipes/1.0.0-beta-1/table-optimization/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-1/table-optimization/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-1/transient/index.html b/docs/fluo-recipes/1.0.0-beta-1/transient/index.html
index 1d30459..7f2407b 100644
--- a/docs/fluo-recipes/1.0.0-beta-1/transient/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-1/transient/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-1 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/accumulo-export/index.html b/docs/fluo-recipes/1.0.0-beta-2/accumulo-export/index.html
index 8c6dbef..d68075a 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/accumulo-export/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/accumulo-export/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/cfm/index.html b/docs/fluo-recipes/1.0.0-beta-2/cfm/index.html
index 64c0b6e..ddff2a9 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/cfm/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/cfm/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/export-queue/index.html b/docs/fluo-recipes/1.0.0-beta-2/export-queue/index.html
index 548fa56..b672910 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/export-queue/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/export-queue/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/index.html b/docs/fluo-recipes/1.0.0-beta-2/index.html
index 931b773..3028ebd 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/recording-tx/index.html b/docs/fluo-recipes/1.0.0-beta-2/recording-tx/index.html
index be0174c..265fc10 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/recording-tx/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/recording-tx/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/row-hasher/index.html b/docs/fluo-recipes/1.0.0-beta-2/row-hasher/index.html
index 9246ebc..7bfa471 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/row-hasher/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/row-hasher/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/serialization/index.html b/docs/fluo-recipes/1.0.0-beta-2/serialization/index.html
index 5cc9ecc..4590306 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/serialization/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/serialization/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/table-optimization/index.html b/docs/fluo-recipes/1.0.0-beta-2/table-optimization/index.html
index 3fb5861..9ae4816 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/table-optimization/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/table-optimization/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/testing/index.html b/docs/fluo-recipes/1.0.0-beta-2/testing/index.html
index a9312ef..2112231 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/testing/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/testing/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-beta-2/transient/index.html b/docs/fluo-recipes/1.0.0-beta-2/transient/index.html
index 842b7fd..f2055b9 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/transient/index.html
+++ b/docs/fluo-recipes/1.0.0-beta-2/transient/index.html
@@ -106,7 +106,7 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
   
 
   
diff --git a/docs/fluo-recipes/1.0.0-incubating/accumulo-export-queue/index.html b/docs/fluo-recipes/1.0.0-incubating/accumulo-export-queue/index.html
index 76a4a3c..dc13c58 100644
--- a/docs/fluo-recipes/1.0.0-incubating/accumulo-export-queue/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/accumulo-export-queue/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
@@ -117,8 +119,8 @@
     <h2 id="background">Background</h2>
 
 <p>The <a href="/docs/fluo-recipes/1.0.0-incubating/export-queue/">Export Queue Recipe</a> provides a generic foundation for building export mechanism to any
-external data store. The <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a> provides an implementation of this recipe for
-Accumulo. The <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a> is located the <code class="highlighter-rouge">fluo-recipes-accumulo</code> module and provides the
+external data store. The <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a> provides an implementation of this recipe for
+Accumulo. The <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a> is located the <code class="highlighter-rouge">fluo-recipes-accumulo</code> module and provides the
 following functionality:</p>
 
 <ul>
@@ -134,7 +136,7 @@ Observers running on other nodes.</li>
 
 <ol>
   <li>
-    <p>Implement a class that extends <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a>.  This class will process exported objects that
+    <p>Implement a class that extends <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a>.  This class will process exported objects that
 are placed on your export queue. For example, the <code class="highlighter-rouge">SimpleExporter</code> class below processes String
 key/value exports and generates mutations for Accumulo.</p>
 
@@ -208,7 +210,7 @@ give it information on how to connect to Accumulo.</p>
 
 <h2 id="other-use-cases">Other use cases</h2>
 
-<p><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloReplicator.html">AccumuloReplicator</a> is a specialized <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a> that replicates a Fluo table to Accumulo.</p>
+<p><a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloReplicator.html">AccumuloReplicator</a> is a specialized <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloExporter.html">AccumuloExporter</a> that replicates a Fluo table to Accumulo.</p>
 
 
   </article>
diff --git a/docs/fluo-recipes/1.0.0-incubating/cfm/index.html b/docs/fluo-recipes/1.0.0-incubating/cfm/index.html
index 7142822..868a901 100644
--- a/docs/fluo-recipes/1.0.0-incubating/cfm/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/cfm/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/export-queue/index.html b/docs/fluo-recipes/1.0.0-incubating/export-queue/index.html
index b7915ee..12f4f15 100644
--- a/docs/fluo-recipes/1.0.0-incubating/export-queue/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/export-queue/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
@@ -216,7 +218,7 @@ following elements:</p>
 <ul>
   <li>Must configure export queues before initializing a Fluo application.</li>
   <li>Transactions adding to an export queue must get an instance of the queue using its unique QID.</li>
-  <li>Must implement a class that extends <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/export/Exporter.html">Exporter</a> in order to process exports.</li>
+  <li>Must implement a class that extends <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/export/Exporter.html">Exporter</a> in order to process exports.</li>
 </ul>
 
 <h2 id="schema">Schema</h2>
diff --git a/docs/fluo-recipes/1.0.0-incubating/index.html b/docs/fluo-recipes/1.0.0-incubating/index.html
index 7fa3c8e..4543b0a 100644
--- a/docs/fluo-recipes/1.0.0-incubating/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/recording-tx/index.html b/docs/fluo-recipes/1.0.0-incubating/recording-tx/index.html
index 8eaebfa..3306829 100644
--- a/docs/fluo-recipes/1.0.0-incubating/recording-tx/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/recording-tx/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/row-hasher/index.html b/docs/fluo-recipes/1.0.0-incubating/row-hasher/index.html
index 4a8a94d..87515d5 100644
--- a/docs/fluo-recipes/1.0.0-incubating/row-hasher/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/row-hasher/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/serialization/index.html b/docs/fluo-recipes/1.0.0-incubating/serialization/index.html
index ce9df3d..37d02c5 100644
--- a/docs/fluo-recipes/1.0.0-incubating/serialization/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/serialization/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
@@ -120,7 +122,7 @@ serialization mechanism is configurable and defaults to using <a href="https://g
 <h2 id="custom-serialization">Custom Serialization</h2>
 
 <p>In order to use a custom serialization method, two steps need to be taken.  The
-first step is to implement <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/serialization/SimpleSerializer.html">SimpleSerializer</a>.  The second step is to
+first step is to implement <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/serialization/SimpleSerializer.html">SimpleSerializer</a>.  The second step is to
 configure Fluo Recipes to use the custom implementation.  This needs to be done
 before initializing Fluo.  Below is an example of how to do this.</p>
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/table-optimization/index.html b/docs/fluo-recipes/1.0.0-incubating/table-optimization/index.html
index f4097ec..3bec7e5 100644
--- a/docs/fluo-recipes/1.0.0-incubating/table-optimization/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/table-optimization/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
@@ -144,7 +146,7 @@ want to use them in production.</p>
 </code></pre>
 </div>
 
-<p><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> is provided in the Accumulo module of Fluo Recipes.</p>
+<p><a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> is provided in the Accumulo module of Fluo Recipes.</p>
 
 <h2 id="command-example">Command Example</h2>
 
@@ -168,7 +170,7 @@ fluo <span class="nb">exec </span>app1 org.apache.fluo.recipes.accumulo.cmds.Opt
 
 <h2 id="table-optimization-registry">Table optimization registry</h2>
 
-<p>Recipes register themself by calling <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/common/TableOptimizations.html">TableOptimizations.registerOptimization()</a>.  Anyone can use
+<p>Recipes register themself by calling <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/common/TableOptimizations.html">TableOptimizations.registerOptimization()</a>.  Anyone can use
 this mechanism, its not limited to use by exisitng recipes.</p>
 
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/testing/index.html b/docs/fluo-recipes/1.0.0-incubating/testing/index.html
index 4fbc539..45abf53 100644
--- a/docs/fluo-recipes/1.0.0-incubating/testing/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/testing/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
@@ -119,8 +121,8 @@ runs against a real Fluo instance.  Fluo Recipes provides the following utility
 code for writing an integration test.</p>
 
 <ul>
-  <li><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/FluoITHelper.html">FluoITHelper</a> A class with utility methods for comparing expected data with whats in Fluo.</li>
-  <li><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/AccumuloExportITBase.html">AccumuloExportITBase</a> A base class for writing an integration test that exports data from Fluo to an external Accumulo table.</li>
+  <li><a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/FluoITHelper.html">FluoITHelper</a> A class with utility methods for comparing expected data with whats in Fluo.</li>
+  <li><a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/AccumuloExportITBase.html">AccumuloExportITBase</a> A base class for writing an integration test that exports data from Fluo to an external Accumulo table.</li>
 </ul>
 
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/transient/index.html b/docs/fluo-recipes/1.0.0-incubating/transient/index.html
index f3bc325..988a901 100644
--- a/docs/fluo-recipes/1.0.0-incubating/transient/index.html
+++ b/docs/fluo-recipes/1.0.0-incubating/transient/index.html
@@ -106,6 +106,8 @@
             <div class="fluo-doc">
 
   
+  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-incubating which is an old version! Check out the <a href="/docs/fluo-recipes/1.1.0-incubating">latest docs</a>!</div>
+  
 
   
 
@@ -138,7 +140,7 @@ standard way.</p>
 
 <p>Recipes like <a href="/docs/fluo-recipes/1.0.0-incubating/export-queue/">Export Queue</a> will automatically register
 transient ranges when configured.  If you would like to register your own
-transient ranges, use <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/common/TransientRegistry.html">TransientRegistry</a>.  Below is a simple example of
+transient ranges, use <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/common/TransientRegistry.html">TransientRegistry</a>.  Below is a simple example of
 using this.</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
@@ -154,7 +156,7 @@ using this.</p>
 
 <p>Although you may never need to register transient ranges directly, you will
 need to periodically compact transient ranges if using a recipe that registers
-them.  Using <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> this can be done with one line of Java code
+them.  Using <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> this can be done with one line of Java code
 like the following.</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
diff --git a/docs/fluo-recipes/1.1.0-incubating/accumulo-export-queue/index.html b/docs/fluo-recipes/1.1.0-incubating/accumulo-export-queue/index.html
new file mode 100644
index 0000000..2cc0915
--- /dev/null
+++ b/docs/fluo-recipes/1.1.0-incubating/accumulo-export-queue/index.html
@@ -0,0 +1,236 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+
+    <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
+    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
+    <link rel="stylesheet" href="/css/fluo.css">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/accumulo-export-queue/">
+    <link rel="icon" type="image/png" href="/resources/favicon.png">
+    
+    <title>Accumulo Export Queue Specialization | Apache Fluo</title>
+
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+    <!-- Place your <script> tags here. -->
+
+<!-- Google Analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55360307-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+<script>window.twttr = (function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0],
+    t = window.twttr || {};
+  if (d.getElementById(id)) return t;
+  js = d.createElement(s);
+  js.id = id;
+  js.src = "https://platform.twitter.com/widgets.js";
+  fjs.parentNode.insertBefore(js, fjs);
+
+  t._e = [];
+  t.ready = function(f) {
+    t._e.push(f);
+  };
+
+  return t;
+}(document, "script", "twitter-wjs"));</script>
+
+  </head>
+  <body style="padding-top: 100px">
+    <nav id="fluo-nav" class="navbar navbar-default navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <div class="navbar-toggle-wrapper visible-xs">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".js-navbar-collapse">
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <a href="/" class="navbar-brand"><img id="fluo-img" height="40px" src="/resources/fluo-logo-dark.png" alt="Apache Fluo"></a>
+        </div>
+        <div class="collapse navbar-collapse js-navbar-collapse" style="margin-top: 20px">
+          <ul class="navbar-nav nav">
+            <li><a href="/release/">Releases</a></li>
+            <li><a href="/tour/">Tour</a></li>
+            <li><a href="/docs/">Docs</a></li>
+            <li><a href="/api/">API</a></li>
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="/getinvolved/">Get Involved</a></li>
+                <li><a href="/news/">News Archive</a></li>
+                <li><a href="/people/">People</a></li>
+                <li><a href="/related-projects/">Related Projects</a></li>
+                <li><a href="/poweredby/">Powered By</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Contributing<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="/how-to-contribute/">How To Contribute</a></li>
+                <li><a href="/release-process/">Release Process</a></li>
+              </ul>
+            </li>
+          </ul>
+          <ul class="navbar-nav nav navbar-right">
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://www.apache.org">Apache Homepage</a></li>
+                <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship</i></a></li>
+                <li><a href="https://www.apache.org/security">Security</a></li>
+                <li><a href="https://www.apache.org/foundation/thanks">Thanks</a></li>
+                <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </nav>
+    <div class="container">
+      <div class="row">
+          <div class="col-sm-12">
+            <div class="fluo-doc">
+
+  
+
+  
+
+  <header class="post-header">
+    <h2 class="post-title">Accumulo Export Queue Specialization</h2>
+  </header>
+
+  <article id="page-content">
+    <h2 id="background">Background</h2>
+
+<p>The <a href="/docs/fluo-recipes/1.1.0-incubating/export-queue/">Export Queue Recipe</a> provides a generic foundation for building export mechanism to any
+external data store. The <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/export/function/AccumuloExporter.html">AccumuloExporter</a> provides an <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/export/function/Exporter.html">Exporter</a> for writing to
+Accumulo. <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/export/function/AccumuloExporter.html">AccumuloExporter</a> is located in the <code class="highlighter-rouge">fluo-recipes-accumulo</code> module and provides the
+following functionality:</p>
+
+<ul>
+  <li>Safely batches writes to Accumulo made by multiple transactions exporting data.</li>
+  <li>Stores Accumulo connection information in Fluo configuration, making it accessible by Export
+Observers running on other nodes.</li>
+  <li>Provides utility code that make it easier and shorter to code common Accumulo export patterns.</li>
+</ul>
+
+<h2 id="example-use">Example Use</h2>
+
+<p>Exporting to Accumulo is easy. Follow the steps below:</p>
+
+<ol>
+  <li>
+    <p>First, implement <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/export/function/AccumuloTranslator.html">AccumuloTranslator</a>.  Your implementation translates exported
+objects to Accumulo Mutations. For example, the <code class="highlighter-rouge">SimpleTranslator</code> class below translates String
+key/values and into mutations for Accumulo.  This step is optional, a lambda could
+be used in step 3 instead of creating a class.</p>
+
+    <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">SimpleTranslator</span> <span class="kd">implements</span> <span class="n">AccumuloTranslator</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span><span class="n">String</span><span class="o">&gt;</span> <span class="o">{</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">translate</span><span class="o">(</span><span class="n">SequencedExport</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">&gt;</span> <span class="n">export</span><span class="o">,</span> <span class="n">Consumer</span><span class="o">&lt;</span><span class="n">Mutation</span><span class="o">&gt;</span> <span class="n">consumer</ [...]
+    <span class="n">Mutation</span> <span class="n">m</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Mutation</span><span class="o">(</span><span class="n">export</span><span class="o">.</span><span class="na">getKey</span><span class="o">());</span>
+    <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"cf"</span><span class="o">,</span> <span class="s">"cq"</span><span class="o">,</span> <span class="n">export</span><span class="o">.</span><span class="na">getSequence</span><span class="o">(),</span> <span class="n">export</span><span class="o">.</span><span class="na">getValue</span><span class="o">());</span>
+    <span class="n">consumer</span><span class="o">.</span><span class="na">accept</span><span class="o">(</span><span class="n">m</span><span class="o">);</span>
+  <span class="o">}</span>
+<span class="o">}</span>
+
+</code></pre>
+    </div>
+  </li>
+  <li>
+    <p>Configure an <code class="highlighter-rouge">ExportQueue</code> and the export table prior to initializing Fluo.</p>
+
+    <div class="language-java highlighter-rouge"><pre class="highlight"><code>
+<span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
+
+<span class="n">String</span> <span class="n">instance</span> <span class="o">=</span>       <span class="c1">// Name of accumulo instance exporting to</span>
+<span class="n">String</span> <span class="n">zookeepers</span> <span class="o">=</span>     <span class="c1">// Zookeepers used by Accumulo instance exporting to</span>
+<span class="n">String</span> <span class="n">user</span> <span class="o">=</span>           <span class="c1">// Accumulo username, user that can write to exportTable</span>
+<span class="n">String</span> <span class="n">password</span> <span class="o">=</span>       <span class="c1">// Accumulo user password</span>
+<span class="n">String</span> <span class="n">exportTable</span> <span class="o">=</span>    <span class="c1">// Name of table to export to</span>
+
+<span class="c1">// Set properties for table to export to in Fluo app configuration.</span>
+<span class="n">AccumuloExporter</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">EXPORT_QID</span><span class="o">).</span><span class="na">instance</span><span class="o">(</span><span class="n">instance</span><span class="o">,</span> <span class="n">zookeepers</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">user</span><span class="o">,</span> <span class="n">password</span><span class="o">).</span><span class="na">table</span><span class="o">(</span><span class="n">exportTable</span><span class="o">).</span><span class="na">save</span><span class="o">(</span><span class="n">fluoConfig</span><span class="o">);</span>
+
+<span class="c1">// Set properties for export queue in Fluo app configuration</span>
+<span class="n">ExportQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">EXPORT_QID</span><span class="o">).</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">valueType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">buckets</span><span class="o">(</span><span class="mi">119</span><span class="o">).</span><span class="na">save</span><span class="o">(</span><span class="n">fluoConfig</span><span class="o">);</span>
+
+<span class="c1">// Initialize Fluo using fluoConfig</span>
+</code></pre>
+    </div>
+  </li>
+  <li>
+    <p>In the applications <code class="highlighter-rouge">ObserverProvider</code>, register an observer that will process exports and write
+them to Accumulo using <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/export/function/AccumuloExporter.html">AccumuloExporter</a>.  Also, register observers that add to the export
+queue.</p>
+
+    <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyObserverProvider</span> <span class="kd">implements</span> <span class="n">ObserverProvider</span> <span class="o">{</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">provide</span><span class="o">(</span><span class="n">Registry</span> <span class="n">obsRegistry</span><span class="o">,</span> <span class="n">Context</span> <span class="n">ctx</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">SimpleConfiguration</span> <span class="n">appCfg</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="na">getAppConfiguration</span><span class="o">();</span>
+
+    <span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">&gt;</span> <span class="n">expQ</span> <span class="o">=</span> <span class="n">ExportQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">EXPORT_QID</span><span class="o">,</span> <span class="n">appCfg</span><span class="o">);</span>
+
+    <span class="c1">// Register observer that will processes entries on export queue and write them to the Accumulo</span>
+    <span class="c1">// table configured earlier. SimpleTranslator from step 1 is passed here, could have used a</span>
+    <span class="c1">// lambda instead.</span>
+    <span class="n">expQ</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span>
+        <span class="k">new</span> <span class="n">AccumuloExporter</span><span class="o">&lt;&gt;(</span><span class="n">EXPORT_QID</span><span class="o">,</span> <span class="n">appCfg</span><span class="o">,</span> <span class="k">new</span> <span class="n">SimpleTranslator</span><span class="o">()));</span>
+
+    <span class="c1">// An example observer created using a lambda that adds to the export queue.</span>
+    <span class="n">obsRegistry</span><span class="o">.</span><span class="na">forColumn</span><span class="o">(</span><span class="n">OBS_COL</span><span class="o">,</span> <span class="n">WEAK</span><span class="o">).</span><span class="na">useObserver</span><span class="o">((</span><span class="n">tx</span><span class="o">,</span><span class="n">row</span><span class="o">,</span><span class="n">col</span><span class="o">)</span> <span class="o">-&gt;</span> <span class="o">{</span>
+      <span class="c1">// Read some data and do some work</span>
+
+      <span class="c1">// Add results to export queue</span>
+      <span class="n">String</span> <span class="n">key</span> <span class="o">=</span>    <span class="c1">// key that identifies export</span>
+      <span class="n">String</span> <span class="n">value</span> <span class="o">=</span>  <span class="c1">// object to export</span>
+      <span class="n">expQ</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">key</span><span class="o">,</span> <span class="n">value</span><span class="o">);</span>
+    <span class="o">});</span>
+  <span class="o">}</span>
+<span class="o">}</span>
+</code></pre>
+    </div>
+  </li>
+</ol>
+
+<h2 id="other-use-cases">Other use cases</h2>
+
+<p>The <code class="highlighter-rouge">getTranslator()</code> method in <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/export/AccumuloReplicator.html">AccumuloReplicator</a> creates a specialized <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/export/function/AccumuloTranslator.html">AccumuloTranslator</a> for replicating a Fluo table to Accum [...]
+
+
+  </article>
+
+</div>
+
+          </div>
+      </div>
+      <hr>
+      <div class="row footer">
+        <div class="col-sm-12 text-center">
+          <div class="center-block">
+          <a href="https://apache.org"><img src="/resources/feather.png" alt="Apache"></a>
+          Copyright &copy; 2017 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache&nbsp;License,&nbsp;Version&nbsp;2.0</a>
+          </div>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/docs/fluo-recipes/1.0.0-beta-2/cfm/index.html b/docs/fluo-recipes/1.1.0-incubating/combine-queue/index.html
similarity index 51%
copy from docs/fluo-recipes/1.0.0-beta-2/cfm/index.html
copy to docs/fluo-recipes/1.1.0-incubating/combine-queue/index.html
index 64c0b6e..e095b37 100644
--- a/docs/fluo-recipes/1.0.0-beta-2/cfm/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/combine-queue/index.html
@@ -8,10 +8,10 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-beta-2/cfm/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/combine-queue/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
-    <title>Collision Free Map Recipe | Apache Fluo</title>
+    <title>Combine Queue Recipe | Apache Fluo</title>
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
@@ -106,40 +106,30 @@
             <div class="fluo-doc">
 
   
-  <div class="alert alert-danger" role="alert">These docs are for Fluo Recipes 1.0.0-beta-2 which is an old version! Check out the <a href="/docs/fluo-recipes/1.0.0-incubating">latest docs</a>!</div>
-  
 
   
-  <div class="alert alert-danger" role="alert">These docs are for a release of Fluo Recipes made before Apache incubation.</div>
-  
 
   <header class="post-header">
-    <h2 class="post-title">Collision Free Map Recipe</h2>
+    <h2 class="post-title">Combine Queue Recipe</h2>
   </header>
 
   <article id="page-content">
     <h2 id="background">Background</h2>
 
-<p>When many transactions are trying to modify the same keys, collisions will occur.
-These collisions will cause the transactions to fail and throughput to nose
-dive.  For example consider the <a href="https://github.com/fluo-io/phrasecount">phrasecount</a> example.  In this example many
-transactions are processing documents as input.  Each transaction counts the
-phrases in its document and then tries to update global phrase counts.  With
-each transaction attempting to update many phrase counts, the probability of
-two transactions colliding is very high.</p>
+<p>When many transactions try to modify the same keys, collisions will occur.  Too many collisions
+cause transactions to fail and throughput to nose dive.  For example, consider <a href="https://github.com/fluo-io/phrasecount">phrasecount</a>
+which has many transactions processing documents.  Each transaction counts the phrases in a document
+and then updates global phrase counts.  Since transaction attempts to update many phrases
+, the probability of collisions is high.</p>
 
 <h2 id="solution">Solution</h2>
 
-<p>This recipe provides a reusable solution for the problem of many transactions
-updating many keys while avoiding collisions.  As an added bonus, this recipe
-also organizes updates into batches for efficiency in order to improve
-throughput.</p>
+<p>The <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/combine/CombineQueue.html">combine queue recipe</a> provides a reusable solution for updating many keys while
+avoiding collisions.  The recipe also organizes updates into batches in order to improve throughput.</p>
 
-<p>The central idea behind this recipe is that updates to a key are queued up to
-be processed by another transaction triggered by weak notifications.  In the
-phrase count example transactions processing documents would queue updates,
-but would not actually update the counts.  Below is an example of how
-transactions would compute phrasecounts using this recipe.</p>
+<p>This recipes queues updates to keys for other transactions to process. In the phrase count example
+transactions processing documents queue updates, but do not actually update the counts.  Below is an
+example of computing phrasecounts using this recipe.</p>
 
 <ul>
   <li>TX1 queues <code class="highlighter-rouge">+1</code> update  for phrase <code class="highlighter-rouge">we want lambdas now</code></li>
@@ -156,11 +146,10 @@ value could also be placed on an export queue to update an external database.</p
 
 <h3 id="buckets">Buckets</h3>
 
-<p>A simple implementation of this recipe would be to have an update queue for
-each key.  However the implementation does something slightly more complex.
-Each update queue is in a bucket and transactions that process updates, process
-all of the updates in a bucket.  This allows more efficient processing of
-updates for the following reasons :</p>
+<p>A simple implementation of this recipe would have an update queue for each key.  However the
+implementation is slightly more complex.  Each update queue is in a bucket and transactions process
+all of the updates in a bucket.  This allows more efficient processing of updates for the following
+reasons :</p>
 
 <ul>
   <li>When updates are queued, notifications are made per bucket(instead of per a key).</li>
@@ -170,71 +159,75 @@ updates for the following reasons :</p>
   <li>Data is organized to make reading exiting values for keys in a bucket more efficient.</li>
 </ul>
 
-<p>Which bucket a key goes to is decided using hash and modulus so that multiple
-updates for the same key always go to the same bucket.</p>
+<p>Which bucket a key goes to is decided using hash and modulus so that multiple updates for a key go
+to the same bucket.</p>
 
-<h2 id="example-use">Example Use</h2>
+<p>The initial number of tablets to create when applying table optimizations can be controlled by
+setting the buckets per tablet option when configuring a Combine Queue.  For example if you
+have 20 tablet servers and 1000 buckets and want 2 tablets per tserver initially then set buckets
+per tablet to 1000/(2*20)=25.</p>
 
-<p>The following code snippets show how to setup and use this recipe for
-wordcount.  The first step in using this recipe is to configure it before
-initializing Fluo.  When initializing an ID will need to be provided.  This ID
-is used in two ways.  First, the ID is used as a row prefix in the table.
-Therefore nothing else should use that row range in the table.  Second, the ID
-is used in generating configuration keys associated with the instance of the
-Collision Free Map.</p>
+<h2 id="example-use">Example Use</h2>
 
-<p>The following snippet shows how to setup a collision free map.</p>
+<p>The following code snippets show how to use this recipe for wordcount.  The first step is to
+configure it before initializing Fluo.  When initializing an ID is needed.  This ID is used in two
+ways.  First, the ID is used as a row prefix in the table.  Therefore nothing else should use that
+row range in the table.  Second, the ID is used in generating configuration keys.</p>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code>  <span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
+<p>The following snippet shows how to configure a combine queue.</p>
 
-  <span class="kt">int</span> <span class="n">numBuckets</span> <span class="o">=</span> <span class="mi">119</span><span class="o">;</span>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code>    <span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
 
-  <span class="n">WordCountMap</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">fluoConfig</span><span class="o">,</span> <span class="mi">119</span><span class="o">);</span>
+    <span class="c1">// Set application properties for the combine queue.  These properties are read later by</span>
+    <span class="c1">// the observers running on each worker.</span>
+    <span class="n">CombineQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">WcObserverProvider</span><span class="o">.</span><span class="na">ID</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">valueType</span><span class="o">(</span><span class="n">Long</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">buckets</span><span class="o">(</span><span class="mi">119</span><span class="o">).</span><span class="na">save</span>< [...]
 
-  <span class="c1">//initialize Fluo using fluoConfig</span>
+    <span class="n">fluoConfig</span><span class="o">.</span><span class="na">setObserverProvider</span><span class="o">(</span><span class="n">WcObserverProvider</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
 
+    <span class="c1">// initialize Fluo using fluoConfig</span>
 </code></pre>
 </div>
 
-<p>Assume the following observer is triggered when a documents contents are
-updated.  It examines new and old document content and determines changes in
-word counts.  These changes are pushed to a collision free map.</p>
+<p>Assume the following observer is triggered when a documents is updated.  It examines new
+and old document content and determines changes in word counts.  These changes are pushed to a
+combine queue.</p>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">DocumentObserver</span> <span class="kd">extends</span> <span class="n">TypedObserver</span> <span class="o">{</span>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">DocumentObserver</span> <span class="kd">implements</span> <span class="n">StringObserver</span> <span class="o">{</span>
+  <span class="c1">// word count combine queue</span>
+  <span class="kd">private</span> <span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">wccq</span><span class="o">;</span>
 
-  <span class="n">CollisionFreeMap</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">wcm</span><span class="o">;</span>
+  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">Column</span> <span class="n">NEW_COL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Column</span><span class="o">(</span><span class="s">"content"</span><span class="o">,</span> <span class="s">"new"</span><span class="o">);</span>
+  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">Column</span> <span class="n">CUR_COL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Column</span><span class="o">(</span><span class="s">"content"</span><span class="o">,</span> <span class="s">"current"</span><span class="o">);</span>
 
-  <span class="nd">@Override</span>
-  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">(</span><span class="n">Context</span> <span class="n">context</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
-    <span class="n">wcm</span> <span class="o">=</span> <span class="n">CollisionFreeMap</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">WordCountMap</span><span class="o">.</span><span class="na">ID</span><span class="o">,</span> <span class="n">context</span><span class="o">.</span><span class="na">getAppConfiguration</span><span class="o">());</span>
+  <span class="kd">public</span> <span class="nf">DocumentObserver</span><span class="o">(</span><span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">wccq</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">this</span><span class="o">.</span><span class="na">wccq</span> <span class="o">=</span> <span class="n">wccq</span><span class="o">;</span>
   <span class="o">}</span>
 
   <span class="nd">@Override</span>
-  <span class="kd">public</span> <span class="n">ObservedColumn</span> <span class="nf">getObservedColumn</span><span class="o">()</span> <span class="o">{</span>
-    <span class="k">return</span> <span class="k">new</span> <span class="nf">ObservedColumn</span><span class="o">(</span><span class="k">new</span> <span class="n">Column</span><span class="o">(</span><span class="s">"content"</span><span class="o">,</span> <span class="s">"new"</span><span class="o">),</span> <span class="n">NotificationType</span><span class="o">.</span><span class="na">STRONG</span><span class="o">);</span>
-  <span class="o">}</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">TransactionBase</span> <span class="n">tx</span><span class="o">,</span> <span class="n">String</span> <span class="n">row</span><span class="o">,</span> <span class="n">Column</span> <span class="n">col</span><span class="o">)</span> <span class="o">{</span>
 
-  <span class="nd">@Override</span>
-  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">TypedTransactionBase</span> <span class="n">tx</span><span class="o">,</span> <span class="n">Bytes</span> <span class="n">row</span><span class="o">,</span> <span class="n">Column</span> <span class="n">col</span><span class="o">)</span> <span class="o">{</span>
-    <span class="n">String</span> <span class="n">newContent</span> <span class="o">=</span> <span class="n">tx</span><span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">col</span><span class="o">(</span><span class="n">col</span><span class="o">).</span><span class="na">toString</span><span class="o">();</span>
-    <span class="n">String</span> <span class="n">currentContent</span> <span class="o">=</span> <span class="n">tx</span><span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"content"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"current"</span [...]
+    <span class="n">Preconditions</span><span class="o">.</span><span class="na">checkArgument</span><span class="o">(</span><span class="n">col</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">NEW_COL</span><span class="o">));</span>
+
+    <span class="n">String</span> <span class="n">newContent</span> <span class="o">=</span> <span class="n">tx</span><span class="o">.</span><span class="na">gets</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">NEW_COL</span><span class="o">);</span>
+    <span class="n">String</span> <span class="n">currentContent</span> <span class="o">=</span> <span class="n">tx</span><span class="o">.</span><span class="na">gets</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">CUR_COL</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span>
 
     <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">newWordCounts</span> <span class="o">=</span> <span class="n">getWordCounts</span><span class="o">(</span><span class="n">newContent</span><span class="o">);</span>
     <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">currentWordCounts</span> <span class="o">=</span> <span class="n">getWordCounts</span><span class="o">(</span><span class="n">currentContent</span><span class="o">);</span>
 
-    <span class="c1">//determine changes in word counts between old and new document content</span>
-    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">changes</span> <span class="o">=</span> <span class="n">calculateChanges</span><span class="o">(</span><span class="n">newWordCounts</span><span class="o">,</span> <span class="n">currentWordCounts</span><span class="o">);</span>    
+    <span class="c1">// determine changes in word counts between old and new document content</span>
+    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">changes</span> <span class="o">=</span> <span class="n">calculateChanges</span><span class="o">(</span><span class="n">newWordCounts</span><span class="o">,</span> <span class="n">currentWordCounts</span><span class="o">);</span>
 
-    <span class="c1">//queue updates to word counts for processing by other transactions</span>
-    <span class="n">wcm</span><span class="o">.</span><span class="na">update</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">changes</span><span class="o">);</span>
+    <span class="c1">// queue updates to word counts for processing by other transactions</span>
+    <span class="n">wccq</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">changes</span><span class="o">);</span>
 
-    <span class="c1">//update the current content and delete the new content</span>
-    <span class="n">tx</span><span class="o">.</span><span class="na">mutate</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"content"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"current"</span><span class="o">).</span><span class="na">set</span><span class="o">(</span><span class=" [...]
-    <span class="n">tx</span><span class="o">.</span><span class="na">mutate</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">col</span><span class="o">(</span><span class="n">col</span><span class="o">).</span><span class="na">delete</span><span class="o">();</span>
+    <span class="c1">// update the current content and delete the new content</span>
+    <span class="n">tx</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">CUR_COL</span><span class="o">,</span> <span class="n">newContent</span><span class="o">);</span>
+    <span class="n">tx</span><span class="o">.</span><span class="na">delete</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">NEW_COL</span><span class="o">);</span>
   <span class="o">}</span>
 
   <span class="kd">private</span> <span class="kd">static</span> <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="nf">getWordCounts</span><span class="o">(</span><span class="n">String</span> <span class="n">doc</span><span class="o">)</span> <span class="o">{</span>
-   <span class="c1">//TODO extract words from doc</span>
+    <span class="c1">// TODO extract words from doc</span>
   <span class="o">}</span>
 
   <span class="kd">private</span> <span class="kd">static</span> <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="nf">calculateChanges</span><span class="o">(</span><span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">newCounts</span><span c [...]
@@ -256,81 +249,57 @@ word counts.  These changes are pushed to a collision free map.</p>
 
     <span class="k">return</span> <span class="n">changes</span><span class="o">;</span>
   <span class="o">}</span>
-
 <span class="o">}</span>
+
+
 </code></pre>
 </div>
 
-<p>Each collision free map has two extension points, a combiner and an update
-observer.  These two extension points are defined below as <code class="highlighter-rouge">WordCountCombiner</code>
-and  <code class="highlighter-rouge">WordCountObserver</code>.  The collision free map configures a Fluo observer that
-will process queued updates.  When processing these queued updates the two
-extension points are called.  In this example <code class="highlighter-rouge">WordCountCombiner</code> is called to
-combine updates that were queued by <code class="highlighter-rouge">DocumentObserver</code>. The collision free map
-will process a batch of keys, calling the combiner for each key.  When finished
-processing a batch, it will call the update observer <code class="highlighter-rouge">WordCountObserver</code>.</p>
-
-<p>An update observer can do additional processing when a batch of key values are
-updated.  In <code class="highlighter-rouge">WordCountObserver</code>, updates are queued for export to an external
-database.  The export is given the new and old value allowing it to delete the
-old value if needed.</p>
-
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="cm">/**
- * This class exists to provide a single place to put all code related to the
- * word count map.
- */</span>
-<span class="kd">public</span> <span class="kd">class</span> <span class="nc">WordCountMap</span> <span class="o">{</span>
+<p>Each combine queue has two extension points, a <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/combine/Combiner.html">combiner</a> and a <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/combine/ChangeObserver.html">change
+observer</a>.  The combine queue configures a Fluo observer to process queued
+updates.  When processing updates the two extension points are called.  The code below shows
+how to use these extension points.</p>
 
-  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ID</span> <span class="o">=</span> <span class="s">"wc"</span><span class="o">;</span>
+<p>A change observer can do additional processing when a batch of key values are updated.  Below
+updates are queued for export to an external database.  The export is given the new and old value
+allowing it to delete the old value if needed.</p>
 
-  <span class="cm">/**
-   * A helper method for configuring the word count map.
-   */</span>
-  <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">configure</span><span class="o">(</span><span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span><span class="o">,</span> <span class="kt">int</span> <span class="n">numBuckets</span><span class="o">)</span> <span class="o">{</span>
-    <span class="n">CollisionFreeMap</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">fluoConfig</span><span class="o">,</span> <span class="k">new</span> <span class="n">Options</span><span class="o">(</span><span class="n">ID</span><span class="o">,</span> <span class="n">WordCountCombiner</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> 
-        <span class="n">WordCountObserver</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">Long</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">numBuckets</span><span class="o">));</span>
-  <span class="o">}</span>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">WcObserverProvider</span> <span class="kd">implements</span> <span class="n">ObserverProvider</span> <span class="o">{</span>
 
-  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">WordCountCombiner</span> <span class="kd">implements</span> <span class="n">Combiner</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="o">{</span>
-    <span class="nd">@Override</span>
-    <span class="kd">public</span> <span class="n">Optional</span><span class="o">&lt;</span><span class="n">Long</span><span class="o">&gt;</span> <span class="nf">combine</span><span class="o">(</span><span class="n">String</span> <span class="n">key</span><span class="o">,</span> <span class="n">Iterator</span><span class="o">&lt;</span><span class="n">Long</span><span class="o">&gt;</span> <span class="n">updates</span><span class="o">)</span> <span class="o">{</span>
-      <span class="kt">long</span> <span class="n">sum</span> <span class="o">=</span> <span class="mi">0L</span><span class="o">;</span>
-
-      <span class="k">while</span> <span class="o">(</span><span class="n">updates</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
-        <span class="n">sum</span> <span class="o">+=</span> <span class="n">updates</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
-      <span class="o">}</span>
+  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ID</span> <span class="o">=</span> <span class="s">"wc"</span><span class="o">;</span>
 
-      <span class="k">if</span> <span class="o">(</span><span class="n">sum</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
-        <span class="c1">//returning absent will cause the collision free map to delte the current key</span>
-        <span class="k">return</span> <span class="n">Optional</span><span class="o">.</span><span class="na">absent</span><span class="o">();</span>
-      <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
-        <span class="k">return</span> <span class="n">Optional</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">sum</span><span class="o">);</span>
-      <span class="o">}</span>
-    <span class="o">}</span>
-  <span class="o">}</span>
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">provide</span><span class="o">(</span><span class="n">Registry</span> <span class="n">obsRegistry</span><span class="o">,</span> <span class="n">Context</span> <span class="n">ctx</span><span class="o">)</span> <span class="o">{</span>
 
-  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">WordCountObserver</span> <span class="kd">extends</span> <span class="n">UpdateObserver</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="o">{</span>
+    <span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">MyDatabaseExport</span><span class="o">&gt;</span> <span class="n">exportQ</span> <span class="o">=</span> <span class="n">createExportQueue</span><span class="o">(</span><span class="n">ctx</span><span class="o">);</span>
 
-    <span class="kd">private</span> <span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">MyDatabaseExport</span><span class="o">&gt;</span> <span class="n">exportQ</span><span class="o">;</span>
+    <span class="c1">// Create a combine queue for computing word counts.</span>
+    <span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">wcMap</span> <span class="o">=</span> <span class="n">CombineQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">ID</span><span class="o">,</span> <span class="n">ctx</span><span class="o">.</span><span class="na">getAppConfiguration</span><s [...]
 
-    <span class="nd">@Override</span>
-    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">(</span><span class="n">String</span> <span class="n">mapId</span><span class="o">,</span> <span class="n">Context</span> <span class="n">observerContext</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
-      <span class="n">exportQ</span> <span class="o">=</span> <span class="n">ExportQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">MyExportQ</span><span class="o">.</span><span class="na">ID</span><span class="o">,</span> <span class="n">observerContext</span><span class="o">.</span><span class="na">getAppConfiguration</span><span class="o">());</span>
-    <span class="o">}</span>
+    <span class="c1">// Register observer that updates the Combine Queue</span>
+    <span class="n">obsRegistry</span><span class="o">.</span><span class="na">forColumn</span><span class="o">(</span><span class="n">DocumentObserver</span><span class="o">.</span><span class="na">NEW_COL</span><span class="o">,</span> <span class="n">STRONG</span><span class="o">).</span><span class="na">useObserver</span><span class="o">(</span><span class="k">new</span> <span class="n">DocumentObserver</span><span class="o">(</span><span class="n">wcMap</span><span class="o">));</span>
 
-    <span class="nd">@Override</span>
-    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">updatingValues</span><span class="o">(</span><span class="n">TransactionBase</span> <span class="n">tx</span><span class="o">,</span> <span class="n">Iterator</span><span class="o">&lt;</span><span class="n">Update</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;&gt;</span> <span class="n">updates</span><span class="o">)</s [...]
-      <span class="k">while</span> <span class="o">(</span><span class="n">updates</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
-        <span class="n">Update</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">update</span> <span class="o">=</span> <span class="n">updates</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
+    <span class="c1">// Used to join new and existing values for a key. The lambda sums all values and returns</span>
+    <span class="c1">// Optional.empty() when the sum is zero. Returning Optional.empty() causes the key/value to be</span>
+    <span class="c1">// deleted. Could have used the built in SummingCombiner.</span>
+    <span class="n">Combiner</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">combiner</span> <span class="o">=</span> <span class="n">input</span> <span class="o">-&gt;</span> <span class="n">input</span><span class="o">.</span><span class="na">stream</span><span class="o">().</span><span class="na">reduce</span><span class="o">(</span><span class="nl">Long:</span><span class="o" [...]
 
+    <span class="c1">// Called when the value of a key changes. The lambda exports these changes to an external</span>
+    <span class="c1">// database. Make sure to read ChangeObserver's javadoc.</span>
+    <span class="n">ChangeObserver</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">changeObs</span> <span class="o">=</span> <span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">changes</span><span class="o">)</span> <span class="o">-&gt;</span> <span class="o">{</span>
+      <span class="k">for</span> <span class="o">(</span><span class="n">Change</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">update</span> <span class="o">:</span> <span class="n">changes</span><span class="o">)</span> <span class="o">{</span>
         <span class="n">String</span> <span class="n">word</span> <span class="o">=</span> <span class="n">update</span><span class="o">.</span><span class="na">getKey</span><span class="o">();</span>
         <span class="n">Optional</span><span class="o">&lt;</span><span class="n">Long</span><span class="o">&gt;</span> <span class="n">oldVal</span> <span class="o">=</span> <span class="n">update</span><span class="o">.</span><span class="na">getOldValue</span><span class="o">();</span>
         <span class="n">Optional</span><span class="o">&lt;</span><span class="n">Long</span><span class="o">&gt;</span> <span class="n">newVal</span> <span class="o">=</span> <span class="n">update</span><span class="o">.</span><span class="na">getNewValue</span><span class="o">();</span>
 
-        <span class="c1">//queue an export to let an external database know the word count has changed</span>
-        <span class="n">exportQ</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">word</span><span class="o">,</span> <span class="k">new</span> <span class="n">MyDatabaseExport</span><span class="o">(</span><span class="n">oldVal</span><span class="o">,</span> <span class="n">newVal</span><span class="o">));</span>
+        <span class="c1">// Queue an export to let an external database know the word count has changed.</span>
+        <span class="n">exportQ</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">word</span><span class="o">,</span> <span class="k">new</span> <span class="n">MyDatabaseExport</span><span class="o">(</span><span class="n">oldVal</span><span class="o">,</span> <span class="n">newVal</span><span class="o">));</span>
       <span class="o">}</span>
-    <span class="o">}</span>
+    <span class="o">};</span>
+
+    <span class="c1">// Register observer that handles updates to the CombineQueue. This observer will use the</span>
+    <span class="c1">// combiner and valueObserver.</span>
+    <span class="n">wcMap</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span> <span class="n">combiner</span><span class="o">,</span> <span class="n">changeObs</span><span class="o">);</span>
   <span class="o">}</span>
 <span class="o">}</span>
 </code></pre>
@@ -339,7 +308,7 @@ old value if needed.</p>
 <h2 id="guarantees">Guarantees</h2>
 
 <p>This recipe makes two important guarantees about updates for a key when it
-calls <code class="highlighter-rouge">updatingValues()</code> on an <code class="highlighter-rouge">UpdateObserver</code>.</p>
+calls <code class="highlighter-rouge">process()</code> on a <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/combine/ChangeObserver.html">ChangeObserver</a>.</p>
 
 <ul>
   <li>The new value reported for an update will be derived from combining all
@@ -350,7 +319,7 @@ TX2 queues a <code class="highlighter-rouge">-1</code> for the same key, there i
 the <code class="highlighter-rouge">-1</code> processed.  A transaction that started processing updates after TX2
 committed would process both.</li>
   <li>The old value will always be what was reported as the new value in the
-previous transaction that called <code class="highlighter-rouge">updatingValues()</code>.</li>
+previous transaction that called <code class="highlighter-rouge">ChangeObserver.process()</code>.</li>
 </ul>
 
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/export-queue/index.html b/docs/fluo-recipes/1.1.0-incubating/export-queue/index.html
similarity index 51%
copy from docs/fluo-recipes/1.0.0-incubating/export-queue/index.html
copy to docs/fluo-recipes/1.1.0-incubating/export-queue/index.html
index b7915ee..4fd2380 100644
--- a/docs/fluo-recipes/1.0.0-incubating/export-queue/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/export-queue/index.html
@@ -8,7 +8,7 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/export-queue/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/export-queue/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
     <title>Export Queue Recipe | Apache Fluo</title>
@@ -116,51 +116,50 @@
   <article id="page-content">
     <h2 id="background">Background</h2>
 
-<p>Fluo is not suited for servicing low latency queries for two reasons.  The
-first reason is that the implementation of transactions are designed for
-throughput.  To get throughput, transactions recover lazily from failures and
-may wait on another transaction that is writing.  Both of these design decisions
-can lead to delays for an individual transaction, but do not negatively impact
-throughput.   The second reason is that Fluo observers executing transactions
-will likely cause a large number of random accesses.  This could lead to high
-response time variability for an individual random access.  This variability
-would not impede throughput but would impede the goal of latency.</p>
+<p>Fluo is not suited for servicing low latency queries for two reasons. First, the implementation of
+transactions are designed for throughput.  To get throughput, transactions recover lazily from
+failures and may wait on other transactions.  Both of these design decisions can
+lead to delays of individual transactions, but do not negatively impact throughput.   The second
+reason is that Fluo observers executing transactions will likely cause a large number of random
+accesses.  This could lead to high response time variability for an individual random access.  This
+variability would not impede throughput but would impede the goal of low latency.</p>
 
 <p>One way to make data transformed by Fluo available for low latency queries is
-to export that data to another system.  For example Fluo could be running
+to export that data to another system.  For example Fluo could run on
 cluster A, continually transforming a large data set, and exporting data to
 Accumulo tables on cluster B.  The tables on cluster B would service user
-queries.  Fluo Recipes has built in support for <a href="/docs/fluo-recipes/1.0.0-incubating/accumulo-export-queue/">exporting to Accumulo</a>,
-however recipe could be used to export to systems other than Accumulo, like
+queries.  Fluo Recipes has built in support for <a href="/docs/fluo-recipes/1.1.0-incubating/accumulo-export-queue/">exporting to Accumulo</a>,
+however this recipe can be used to export to systems other than Accumulo, like
 Redis, Elasticsearch, MySQL, etc.</p>
 
 <p>Exporting data from Fluo is easy to get wrong which is why this recipe exists.
 To understand what can go wrong consider the following example observer
 transaction.</p>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyObserver</span> <span class="kd">extends</span> <span class="n">AbstractObserver</span> <span class="o">{</span>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyObserver</span> <span class="kd">implements</span> <span class="n">StringObserver</span> <span class="o">{</span>
 
-    <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">TYPEL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeLayer</span><span class="o">(</span><span class="k">new</span> <span class="n">StringEncoder</span><span class="o">());</span>
+    <span class="kd">static</span> <span class="kd">final</span> <span class="n">Column</span> <span class="n">UPDATE_COL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Column</span><span class="o">(</span><span class="s">"meta"</span><span class="o">,</span> <span class="s">"numUpdates"</span><span class="o">);</span>
+    <span class="kd">static</span> <span class="kd">final</span> <span class="n">Column</span> <span class="n">COUNTER_COL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Column</span><span class="o">(</span><span class="s">"meta"</span><span class="o">,</span> <span class="s">"counter1"</span><span class="o">);</span>
 
     <span class="c1">//reperesents a Query system extrnal to Fluo that is updated by Fluo</span>
     <span class="n">QuerySystem</span> <span class="n">querySystem</span><span class="o">;</span>
 
     <span class="nd">@Override</span>
-    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">TransactionBase</span> <span class="n">tx</span><span class="o">,</span> <span class="n">Bytes</span> <span class="n">row</span><span class="o">,</span> <span class="n">Column</span> <span class="n">col</span><span class="o">)</span> <span class="o">{</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">TransactionBase</span> <span class="n">tx</span><span class="o">,</span> <span class="n">String</span> <span class="n">row</span><span class="o">,</span> <span class="n">Column</span> <span class="n">col</span><span class="o">)</span> <span class="o">{</span>
 
-        <span class="n">TypedTransactionBase</span> <span class="n">ttx</span> <span class="o">=</span> <span class="n">TYPEL</span><span class="o">.</span><span class="na">wrap</span><span class="o">(</span><span class="n">tx</span><span class="o">);</span>
-        <span class="kt">int</span> <span class="n">oldCount</span> <span class="o">=</span> <span class="n">ttx</span><span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"counter1"</span><spa [...]
-        <span class="kt">int</span> <span class="n">numUpdates</span> <span class="o">=</span> <span class="n">ttx</span><span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"numUpdates"</span> [...]
-        <span class="kt">int</span> <span class="n">newCount</span> <span class="o">=</span> <span class="n">oldCount</span> <span class="o">+</span> <span class="n">numUpdates</span><span class="o">;</span>
-        <span class="n">ttx</span><span class="o">.</span><span class="na">mutate</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"counter1"</span><span class="o">).</span><span class="na">set</span><span class="o">(</span><span clas [...]
-        <span class="n">ttx</span><span class="o">.</span><span class="na">mutate</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"numUpdates"</span><span class="o">).</span><span class="na">set</span><span class="o">(</span><span cl [...]
+       <span class="kt">int</span> <span class="n">oldCount</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">tx</span><span class="o">.</span><span class="na">gets</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">COUNTER_COL</span><span class="o">,</span> <span class="s">"0"</span><span class="o">));</span>
+       <span class="kt">int</span> <span class="n">numUpdates</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">tx</span><span class="o">.</span><span class="na">gets</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">UPDATE_COL</span><span class="o">,</span> <span class="s">"0"</span><span class="o">));</span>
+       <span class="kt">int</span> <span class="n">newCount</span> <span class="o">=</span> <span class="n">oldCount</span> <span class="o">+</span> <span class="n">numUpdates</span><span class="o">;</span>
+
+       <span class="n">tx</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">COUNTER_COL</span><span class="o">,</span> <span class="s">""</span> <span class="o">+</span> <span class="n">newCount</span><span class="o">);</span>
+       <span class="n">tx</span><span class="o">.</span><span class="na">delete</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">UPDATE_COL</span><span class="o">);</span>
 
         <span class="c1">//Build an inverted index in the query system, based on count from the</span>
         <span class="c1">//meta:counter1 column in fluo.  Do this by creating rows for the</span>
-        <span class="c1">//external query system based on the count.        </span>
+        <span class="c1">//external query system based on the count.</span>
         <span class="n">String</span> <span class="n">oldCountRow</span> <span class="o">=</span> <span class="n">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"%06d"</span><span class="o">,</span> <span class="n">oldCount</span><span class="o">);</span>
         <span class="n">String</span> <span class="n">newCountRow</span> <span class="o">=</span> <span class="n">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"%06d"</span><span class="o">,</span> <span class="n">newCount</span><span class="o">);</span>
-        
+
         <span class="c1">//add a new entry to the inverted index</span>
         <span class="n">querySystem</span><span class="o">.</span><span class="na">insertRow</span><span class="o">(</span><span class="n">newCountRow</span><span class="o">,</span> <span class="n">row</span><span class="o">);</span>
         <span class="c1">//remove the old entry from the inverted index</span>
@@ -216,32 +215,18 @@ following elements:</p>
 <ul>
   <li>Must configure export queues before initializing a Fluo application.</li>
   <li>Transactions adding to an export queue must get an instance of the queue using its unique QID.</li>
-  <li>Must implement a class that extends <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/export/Exporter.html">Exporter</a> in order to process exports.</li>
+  <li>Must create a class or lambda that implements <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/export/function/Exporter.html">Exporter</a> in order to process exports.</li>
 </ul>
 
-<h2 id="schema">Schema</h2>
-
-<p>Each export queue stores its data in the Fluo table in a contiguous row range.
-This row range is defined by using the export queue id as a row prefix for all
-data in the export queue.  So the row range defined by the export queue id
-should not be used by anything else.</p>
-
-<p>All data stored in an export queue is <a href="/docs/fluo-recipes/1.0.0-incubating/transient/">transient</a>. When an export
-queue is configured, it will recommend split points using the <a href="/docs/fluo-recipes/1.0.0-incubating/table-optimization/">table
-optimization process</a>.  The number of splits generated
-by this process can be controlled by setting the number of buckets per tablet
-when configuring an export queue.</p>
-
 <h2 id="example-use">Example Use</h2>
 
-<p>This example will show how to build an inverted index in an external
-query system using an export queue.  The class below is simple POJO to hold the
-count update, this will be used as the value for the export queue.</p>
+<p>This example shows how to incrementally build an inverted index in an external query system using an
+export queue.  The class below is simple POJO used as the value for the export queue.</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">class</span> <span class="nc">CountUpdate</span> <span class="o">{</span>
   <span class="kd">public</span> <span class="kt">int</span> <span class="n">oldCount</span><span class="o">;</span>
   <span class="kd">public</span> <span class="kt">int</span> <span class="n">newCount</span><span class="o">;</span>
-  
+
   <span class="kd">public</span> <span class="nf">CountUpdate</span><span class="o">(</span><span class="kt">int</span> <span class="n">oc</span><span class="o">,</span> <span class="kt">int</span> <span class="n">nc</span><span class="o">)</span> <span class="o">{</span>
     <span class="k">this</span><span class="o">.</span><span class="na">oldCount</span> <span class="o">=</span> <span class="n">oc</span><span class="o">;</span>
     <span class="k">this</span><span class="o">.</span><span class="na">newCount</span> <span class="o">=</span> <span class="n">nc</span><span class="o">;</span>
@@ -250,104 +235,134 @@ count update, this will be used as the value for the export queue.</p>
 </code></pre>
 </div>
 
-<p>The following code shows how to configure an export queue.  This code will
-modify the FluoConfiguration object with options needed for the export queue.
+<p>The following code shows how to configure an export queue.  This code
+modifies the FluoConfiguration object with options needed for the export queue.
 This FluoConfiguration object should be used to initialize the fluo
 application.</p>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code>   <span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">FluoApp</span> <span class="o">{</span>
 
-   <span class="c1">//queue id "ici" means inverted count index, would probably use static final in real application</span>
-   <span class="n">String</span> <span class="n">exportQueueID</span> <span class="o">=</span> <span class="s">"ici"</span><span class="o">;</span>  
-   <span class="n">Class</span><span class="o">&lt;</span><span class="n">CountExporter</span><span class="o">&gt;</span> <span class="n">exporterType</span> <span class="o">=</span> <span class="n">CountExporter</span><span class="o">.</span><span class="na">class</span><span class="o">;</span>
-   <span class="n">Class</span><span class="o">&lt;</span><span class="n">Bytes</span><span class="o">&gt;</span> <span class="n">keyType</span> <span class="o">=</span> <span class="n">Bytes</span><span class="o">.</span><span class="na">class</span><span class="o">;</span>
-   <span class="n">Class</span><span class="o">&lt;</span><span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="n">valueType</span> <span class="o">=</span> <span class="n">CountUpdate</span><span class="o">.</span><span class="na">class</span><span class="o">;</span>
-   <span class="kt">int</span> <span class="n">numBuckets</span> <span class="o">=</span> <span class="mi">1009</span><span class="o">;</span>
-   <span class="c1">//the desired number of tablets to create when applying table optimizations</span>
-   <span class="kt">int</span> <span class="n">numTablets</span> <span class="o">=</span> <span class="mi">100</span><span class="o">;</span>
+  <span class="c1">// export queue id "ici" means inverted count index</span>
+  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">EQ_ID</span> <span class="o">=</span> <span class="s">"ici"</span><span class="o">;</span>
 
-   <span class="n">ExportQueue</span><span class="o">.</span><span class="na">Options</span> <span class="n">eqOptions</span> <span class="o">=</span>
-        <span class="k">new</span> <span class="n">ExportQueue</span><span class="o">.</span><span class="na">Options</span><span class="o">(</span><span class="n">exportQueueId</span><span class="o">,</span> <span class="n">exporterType</span><span class="o">,</span> <span class="n">keyType</span><span class="o">,</span> <span class="n">valueType</span><span class="o">,</span> <span class="n">numBuckets</span><span class="o">)</span>
-          <span class="o">.</span><span class="na">setsetBucketsPerTablet</span><span class="o">(</span><span class="n">numBuckets</span><span class="o">/</span><span class="n">numTablets</span><span class="o">);</span>
-   <span class="n">ExportQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">fluoConfig</span><span class="o">,</span> <span class="n">eqOptions</span><span class="o">);</span>
+  <span class="kd">static</span> <span class="kd">final</span> <span class="n">Column</span> <span class="n">UPDATE_COL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Column</span><span class="o">(</span><span class="s">"meta"</span><span class="o">,</span> <span class="s">"numUpdates"</span><span class="o">);</span>
+  <span class="kd">static</span> <span class="kd">final</span> <span class="n">Column</span> <span class="n">COUNTER_COL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Column</span><span class="o">(</span><span class="s">"meta"</span><span class="o">,</span> <span class="s">"counter1"</span><span class="o">);</span>
+
+  <span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">AppObserverProvider</span> <span class="kd">implements</span> <span class="n">ObserverProvider</span> <span class="o">{</span>
+    <span class="nd">@Override</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">provide</span><span class="o">(</span><span class="n">Registry</span> <span class="n">obsRegistry</span><span class="o">,</span> <span class="n">Context</span> <span class="n">ctx</span><span class="o">)</span> <span class="o">{</span>
+      <span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="n">expQ</span> <span class="o">=</span>
+          <span class="n">ExportQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">EQ_ID</span><span class="o">,</span> <span class="n">ctx</span><span class="o">.</span><span class="na">getAppConfiguration</span><span class="o">());</span>
 
-   <span class="c1">//initialize Fluo using fluoConfig</span>
+      <span class="c1">// register observer that will queue data to export</span>
+      <span class="n">obsRegistry</span><span class="o">.</span><span class="na">forColumn</span><span class="o">(</span><span class="n">UPDATE_COL</span><span class="o">,</span> <span class="n">STRONG</span><span class="o">).</span><span class="na">useObserver</span><span class="o">(</span><span class="k">new</span> <span class="n">MyObserver</span><span class="o">(</span><span class="n">expQ</span><span class="o">));</span>
+
+      <span class="c1">// register observer that will export queued data</span>
+      <span class="n">expQ</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span> <span class="k">new</span> <span class="n">CountExporter</span><span class="o">());</span>
+    <span class="o">}</span>
+  <span class="o">}</span>
+
+  <span class="cm">/**
+   * Call this method before initializing Fluo.
+   *
+   * @param fluoConfig the configuration object that will be used to initialize Fluo
+   */</span>
+  <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">preInit</span><span class="o">(</span><span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span><span class="o">)</span> <span class="o">{</span>
+
+    <span class="c1">// Set properties for export queue in Fluo app configuration</span>
+    <span class="n">ExportQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">QUEUE_ID</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">valueType</span><span class="o">(</span><span class="n">CountUpdate</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">buckets</span><span class="o">(</span><span class="mi">1009</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">bucketsPerTablet</span><span class="o">(</span><span class="mi">10</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">save</span><span class="o">(</span><span class="n">getFluoConfiguration</span><span class="o">());</span>
+
+    <span class="n">fluoConfig</span><span class="o">.</span><span class="na">setObserverProvider</span><span class="o">(</span><span class="n">AppObserverProvider</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+  <span class="o">}</span>
+<span class="o">}</span>
 </code></pre>
 </div>
 
-<p>Below is updated version of the observer from above thats now using the export
+<p>Below is updated version of the observer from above thats now using an export
 queue.</p>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyObserver</span> <span class="kd">extends</span> <span class="n">AbstractObserver</span> <span class="o">{</span>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyObserver</span> <span class="kd">implements</span> <span class="n">StringObserver</span> <span class="o">{</span>
 
-    <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">TYPEL</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeLayer</span><span class="o">(</span><span class="k">new</span> <span class="n">StringEncoder</span><span class="o">());</span>
+  <span class="kd">private</span> <span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="n">exportQueue</span><span class="o">;</span>
 
-    <span class="kd">private</span> <span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">Bytes</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="n">exportQueue</span><span class="o">;</span>
+  <span class="kd">public</span> <span class="nf">MyObserver</span><span class="o">(</span><span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="n">exportQueue</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">this</span><span class="o">.</span><span class="na">exportQueue</span> <span class="o">=</span> <span class="n">exportQueue</span><span class="o">;</span>
+  <span class="o">}</span>
 
-    <span class="nd">@Override</span>
-    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">(</span><span class="n">Context</span> <span class="n">context</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
-      <span class="n">exportQueue</span> <span class="o">=</span> <span class="n">ExportQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="s">"ici"</span><span class="o">,</span> <span class="n">context</span><span class="o">.</span><span class="na">getAppConfiguration</span><span class="o">());</span>
-    <span class="o">}</span>
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">TransactionBase</span> <span class="n">tx</span><span class="o">,</span> <span class="n">String</span> <span class="n">row</span><span class="o">,</span> <span class="n">Column</span> <span class="n">col</span><span class="o">)</span> <span class="o">{</span>
 
-    <span class="nd">@Override</span>
-    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">TransactionBase</span> <span class="n">tx</span><span class="o">,</span> <span class="n">Bytes</span> <span class="n">row</span><span class="o">,</span> <span class="n">Column</span> <span class="n">col</span><span class="o">)</span> <span class="o">{</span>
-
-        <span class="n">TypedTransactionBase</span> <span class="n">ttx</span> <span class="o">=</span> <span class="n">TYPEL</span><span class="o">.</span><span class="na">wrap</span><span class="o">(</span><span class="n">tx</span><span class="o">);</span>
-        <span class="kt">int</span> <span class="n">oldCount</span> <span class="o">=</span> <span class="n">ttx</span><span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"counter1"</span><spa [...]
-        <span class="kt">int</span> <span class="n">numUpdates</span> <span class="o">=</span> <span class="n">ttx</span><span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"numUpdates"</span> [...]
-        <span class="kt">int</span> <span class="n">newCount</span> <span class="o">=</span> <span class="n">oldCount</span> <span class="o">+</span> <span class="n">numUpdates</span><span class="o">;</span>
-        <span class="n">ttx</span><span class="o">.</span><span class="na">mutate</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"counter1"</span><span class="o">).</span><span class="na">set</span><span class="o">(</span><span clas [...]
-        <span class="n">ttx</span><span class="o">.</span><span class="na">mutate</span><span class="o">().</span><span class="na">row</span><span class="o">(</span><span class="n">row</span><span class="o">).</span><span class="na">fam</span><span class="o">(</span><span class="s">"meta"</span><span class="o">).</span><span class="na">qual</span><span class="o">(</span><span class="s">"numUpdates"</span><span class="o">).</span><span class="na">set</span><span class="o">(</span><span cl [...]
-
-        <span class="c1">//Because the update to the export queue is part of the transaction,</span>
-        <span class="c1">//either the update to meta:counter1 is made and an entry is added to</span>
-        <span class="c1">//the export queue or neither happens.</span>
-        <span class="n">exportQueue</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">row</span><span class="o">,</span> <span class="k">new</span> <span class="n">CountUpdate</span><span class="o">(</span><span class="n">oldCount</span><span class="o">,</span> <span class="n">newCount</span><span class="o">));</span>
-    <span class="o">}</span>
+    <span class="kt">int</span> <span class="n">oldCount</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">tx</span><span class="o">.</span><span class="na">gets</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">FluoApp</span><span class="o">.</span><span class="na">COUNTER_COL</span><span class="o">,</span> <span class="s">"0"</span>< [...]
+    <span class="kt">int</span> <span class="n">numUpdates</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">tx</span><span class="o">.</span><span class="na">gets</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">FluoApp</span><span class="o">.</span><span class="na">UPDATE_COL</span><span class="o">,</span> <span class="s">"0"</span> [...]
+    <span class="kt">int</span> <span class="n">newCount</span> <span class="o">=</span> <span class="n">oldCount</span> <span class="o">+</span> <span class="n">numUpdates</span><span class="o">;</span>
+
+    <span class="n">tx</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">FluoApp</span><span class="o">.</span><span class="na">COUNTER_COL</span><span class="o">,</span> <span class="s">""</span> <span class="o">+</span> <span class="n">newCount</span><span class="o">);</span>
+    <span class="n">tx</span><span class="o">.</span><span class="na">delete</span><span class="o">(</span><span class="n">row</span><span class="o">,</span> <span class="n">FluoApp</span><span class="o">.</span><span class="na">UPDATE_COL</span><span class="o">);</span>
+
+    <span class="c1">// Because the update to the export queue is part of the transaction,</span>
+    <span class="c1">// either the update to meta:counter1 is made and an entry is added to</span>
+    <span class="c1">// the export queue or neither happens.</span>
+    <span class="n">exportQueue</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">row</span><span class="o">,</span> <span class="k">new</span> <span class="n">CountUpdate</span><span class="o">(</span><span class="n">oldCount</span><span class="o">,</span> <span class="n">newCount</span><span class="o">));</span>
+  <span class="o">}</span>
 <span class="o">}</span>
 </code></pre>
 </div>
 
-<p>The observer setup for the export queue will call the <code class="highlighter-rouge">processExports()</code> method
-on the class below to process entries in the export queue.  It possible the
-call to <code class="highlighter-rouge">processExports()</code> can fail part way through and/or be called multiple
-times.  In the case of failures the exporter will eventually be called again
-with the exact same data.  The possibility of the same export entry being
-processed on multiple computer at different times can cause exports to arrive
-out of order.  The system receiving exports has to be resilient to data
-arriving out of order and multiple times.  The purpose of the sequence number
-is to help systems receiving data from Fluo process out of order and redundant
-data.</p>
-
-<div class="language-java highlighter-rouge"><pre class="highlight"><code>  <span class="kd">public</span> <span class="kd">class</span> <span class="nc">CountExporter</span> <span class="kd">extends</span> <span class="n">Exporter</span><span class="o">&lt;</span><span class="n">Bytes</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="o">{</span>
-    <span class="c1">//represents the external query system we want to update from Fluo</span>
-    <span class="n">QuerySystem</span> <span class="n">querySystem</span><span class="o">;</span>
-
-    <span class="nd">@Override</span>
-    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">processExports</span><span class="o">(</span><span class="n">Iterator</span><span class="o">&lt;</span><span class="n">SequencedExport</span><span class="o">&lt;</span><span class="n">Bytes</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;&gt;</span> <span class="n">exportIterator</span><span class="o">)</span> <span class="o">{</span>
-      <span class="n">BatchUpdater</span> <span class="n">batchUpdater</span> <span class="o">=</span> <span class="n">querySystem</span><span class="o">.</span><span class="na">getBatchUpdater</span><span class="o">();</span>
-      <span class="k">while</span><span class="o">(</span><span class="n">exportIterator</span><span class="o">.</span><span class="na">hasNext</span><span class="o">()){</span>
-        <span class="n">SequencedExport</span><span class="o">&lt;</span><span class="n">Bytes</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="n">exportEntry</span> <span class="o">=</span>  <span class="n">exportItertor</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
-        <span class="n">Bytes</span> <span class="n">row</span> <span class="o">=</span>  <span class="n">exportEntry</span><span class="o">.</span><span class="na">getKey</span><span class="o">();</span>
-        <span class="n">UpdateCount</span> <span class="n">uc</span> <span class="o">=</span> <span class="n">exportEntry</span><span class="o">.</span><span class="na">getValue</span><span class="o">();</span>
-        <span class="kt">long</span> <span class="n">seqNum</span> <span class="o">=</span> <span class="n">exportEntry</span><span class="o">.</span><span class="na">getSequence</span><span class="o">();</span>
-
-        <span class="n">String</span> <span class="n">oldCountRow</span> <span class="o">=</span> <span class="n">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"%06d"</span><span class="o">,</span> <span class="n">uc</span><span class="o">.</span><span class="na">oldCount</span><span class="o">);</span>
-        <span class="n">String</span> <span class="n">newCountRow</span> <span class="o">=</span> <span class="n">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"%06d"</span><span class="o">,</span> <span class="n">uc</span><span class="o">.</span><span class="na">newCount</span><span class="o">);</span>
-
-        <span class="c1">//add a new entry to the inverted index</span>
-        <span class="n">batchUpdater</span><span class="o">.</span><span class="na">insertRow</span><span class="o">(</span><span class="n">newCountRow</span><span class="o">,</span> <span class="n">row</span><span class="o">,</span> <span class="n">seqNum</span><span class="o">);</span>
-        <span class="c1">//remove the old entry from the inverted index</span>
-        <span class="n">batchUpdater</span><span class="o">.</span><span class="na">deleteRow</span><span class="o">(</span><span class="n">oldCountRow</span><span class="o">,</span> <span class="n">row</span><span class="o">,</span> <span class="n">seqNum</span><span class="o">);</span>
-      <span class="o">}</span>
-
-      <span class="c1">//flush all of the updates to the external query system</span>
-      <span class="n">batchUpdater</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+<p>The export queue will call the <code class="highlighter-rouge">accept()</code> method on the class below to process entries queued for
+export.  It is possible the call to <code class="highlighter-rouge">accept()</code> can fail part way through and/or be called multiple
+times.  In the case of failures the export consumer will be called again with the same data.
+Its possible for the same export entry to be processed on multiple computers at different times.
+This can cause exports to arrive out of order.   The purpose of the sequence number is to help
+systems receiving out of order and redundant data.</p>
+
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">CountExporter</span> <span class="kd">implements</span> <span class="n">Exporter</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="o">{</span>
+  <span class="c1">// represents the external query system we want to update from Fluo</span>
+  <span class="n">QuerySystem</span> <span class="n">querySystem</span><span class="o">;</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">export</span><span class="o">(</span><span class="n">Iterator</span><span class="o">&lt;</span><span class="n">SequencedExport</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;&gt;</span> <span class="n">exports</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">BatchUpdater</span> <span class="n">batchUpdater</span> <span class="o">=</span> <span class="n">querySystem</span><span class="o">.</span><span class="na">getBatchUpdater</span><span class="o">();</span>
+
+    <span class="k">while</span> <span class="o">(</span><span class="n">exports</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
+      <span class="n">SequencedExport</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">CountUpdate</span><span class="o">&gt;</span> <span class="n">export</span> <span class="o">=</span> <span class="n">exports</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
+      <span class="n">String</span> <span class="n">row</span> <span class="o">=</span> <span class="n">export</span><span class="o">.</span><span class="na">getKey</span><span class="o">();</span>
+      <span class="n">CountUpdate</span> <span class="n">uc</span> <span class="o">=</span> <span class="n">export</span><span class="o">.</span><span class="na">getValue</span><span class="o">();</span>
+      <span class="kt">long</span> <span class="n">seqNum</span> <span class="o">=</span> <span class="n">export</span><span class="o">.</span><span class="na">getSequence</span><span class="o">();</span>
+
+      <span class="n">String</span> <span class="n">oldCountRow</span> <span class="o">=</span> <span class="n">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"%06d"</span><span class="o">,</span> <span class="n">uc</span><span class="o">.</span><span class="na">oldCount</span><span class="o">);</span>
+      <span class="n">String</span> <span class="n">newCountRow</span> <span class="o">=</span> <span class="n">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"%06d"</span><span class="o">,</span> <span class="n">uc</span><span class="o">.</span><span class="na">newCount</span><span class="o">);</span>
+
+      <span class="c1">// add a new entry to the inverted index</span>
+      <span class="n">batchUpdater</span><span class="o">.</span><span class="na">insertRow</span><span class="o">(</span><span class="n">newCountRow</span><span class="o">,</span> <span class="n">row</span><span class="o">,</span> <span class="n">seqNum</span><span class="o">);</span>
+      <span class="c1">// remove the old entry from the inverted index</span>
+      <span class="n">batchUpdater</span><span class="o">.</span><span class="na">deleteRow</span><span class="o">(</span><span class="n">oldCountRow</span><span class="o">,</span> <span class="n">row</span><span class="o">,</span> <span class="n">seqNum</span><span class="o">);</span>
     <span class="o">}</span>
+
+    <span class="c1">// flush all of the updates to the external query system</span>
+    <span class="n">batchUpdater</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
   <span class="o">}</span>
+<span class="o">}</span>
 </code></pre>
 </div>
 
+<h2 id="schema">Schema</h2>
+
+<p>Each export queue stores its data in the Fluo table in a contiguous row range.
+This row range is defined by using the export queue id as a row prefix for all
+data in the export queue.  So the row range defined by the export queue id
+should not be used by anything else.</p>
+
+<p>All data stored in an export queue is <a href="/docs/fluo-recipes/1.1.0-incubating/transient/">transient</a>. When an export
+queue is configured, it will recommend split points using the <a href="/docs/fluo-recipes/1.1.0-incubating/table-optimization/">table
+optimization process</a>.  The number of splits generated
+by this process can be controlled by setting the number of buckets per tablet
+when configuring an export queue.</p>
+
 <h2 id="concurrency">Concurrency</h2>
 
 <p>Additions to the export queue will never collide.  If two transactions add the
diff --git a/docs/fluo-recipes/1.0.0-incubating/index.html b/docs/fluo-recipes/1.1.0-incubating/index.html
similarity index 88%
copy from docs/fluo-recipes/1.0.0-incubating/index.html
copy to docs/fluo-recipes/1.1.0-incubating/index.html
index 7fa3c8e..1ca4cc8 100644
--- a/docs/fluo-recipes/1.0.0-incubating/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/index.html
@@ -8,10 +8,10 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
-    <title>Fluo Recipes 1.0.0-incubating Documentation | Apache Fluo</title>
+    <title>Fluo Recipes 1.1.0-incubating Documentation | Apache Fluo</title>
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
@@ -110,36 +110,40 @@
   
 
   <header class="post-header">
-    <h2 class="post-title">Fluo Recipes 1.0.0-incubating Documentation</h2>
+    <h2 class="post-title">Fluo Recipes 1.1.0-incubating Documentation</h2>
   </header>
 
   <article id="page-content">
     <p><strong>Fluo Recipes are common code for <a href="https://fluo.apache.org/">Apache Fluo</a> application developers.</strong></p>
 
-<p>Fluo Recipes build on the <a href="/api/">Fluo API</a> to offer additional functionality to
+<p>Fluo Recipes build on the <a href="/api">Fluo API</a> to offer additional functionality to
 developers. They are published separately from Fluo on their own release schedule.
 This allows Fluo Recipes to iterate and innovate faster than Fluo (which will maintain
-a more minimal API on a slower release cycle).</p>
+a more minimal API on a slower release cycle). Fluo Recipes offers code to implement
+common patterns on top of Fluo’s API.  It also offers glue code to external libraries
+like Spark and Kryo.</p>
 
 <h3 id="documentation">Documentation</h3>
 
-<p>Recipes are documented below and in the <a href="/api/">Recipes API docs</a>.</p>
+<p>Recipes are documented below and in the <a href="/api">Recipes API docs</a>.</p>
 
 <ul>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/cfm/">Collision Free Map</a> - A recipe for making many to many updates.</li>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/export-queue/">Export Queue</a> - A recipe for exporting data from Fluo to external systems.</li>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/row-hasher/">Row Hash Prefix</a> - A recipe for spreading data evenly in a row prefix.</li>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/recording-tx/">RecordingTransaction</a> - A wrapper for a Fluo transaction that records all transaction
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/combine-queue/">Combine Queue</a> - A recipe for concurrently updating many keys while avoiding
+collisions.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/export-queue/">Export Queue</a> - A recipe for exporting data from Fluo to external systems.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/row-hasher/">Row Hash Prefix</a> - A recipe for spreading data evenly in a row prefix.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/recording-tx/">RecordingTransaction</a> - A wrapper for a Fluo transaction that records all transaction
 operations to a log which can be used to export data from Fluo.</li>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/testing/">Testing</a> Some code to help write Fluo Integration test.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/testing/">Testing</a> Some code to help write Fluo Integration test.</li>
 </ul>
 
 <p>Recipes have common needs that are broken down into the following reusable components.</p>
 
 <ul>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/serialization/">Serialization</a> - Common code for serializing POJOs.</li>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/transient/">Transient Ranges</a> - Standardized process for dealing with transient data.</li>
-  <li><a href="/docs/fluo-recipes/1.0.0-incubating/table-optimization/">Table optimization</a> - Standardized process for optimizing the Fluo table.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/serialization/">Serialization</a> - Common code for serializing POJOs.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/transient/">Transient Ranges</a> - Standardized process for dealing with transient data.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/table-optimization/">Table optimization</a> - Standardized process for optimizing the Fluo table.</li>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/spark/">Spark integration</a> - Spark+Fluo integration code.</li>
 </ul>
 
 <h3 id="usage">Usage</h3>
@@ -157,7 +161,7 @@ Spark.</p>
 <p>Below is a sample Maven POM containing all possible Fluo Recipes dependencies:</p>
 
 <div class="language-xml highlighter-rouge"><pre class="highlight"><code>  <span class="nt">&lt;properties&gt;</span>
-    <span class="nt">&lt;fluo-recipes.version&gt;</span>1.0.0-incubating<span class="nt">&lt;/fluo-recipes.version&gt;</span>
+    <span class="nt">&lt;fluo-recipes.version&gt;</span>1.1.0-incubating<span class="nt">&lt;/fluo-recipes.version&gt;</span>
   <span class="nt">&lt;/properties&gt;</span>
 
   <span class="nt">&lt;dependencies&gt;</span>
diff --git a/docs/fluo-recipes/1.0.0-incubating/recording-tx/index.html b/docs/fluo-recipes/1.1.0-incubating/recording-tx/index.html
similarity index 99%
copy from docs/fluo-recipes/1.0.0-incubating/recording-tx/index.html
copy to docs/fluo-recipes/1.1.0-incubating/recording-tx/index.html
index 8eaebfa..ff0eaac 100644
--- a/docs/fluo-recipes/1.0.0-incubating/recording-tx/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/recording-tx/index.html
@@ -8,7 +8,7 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/recording-tx/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/recording-tx/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
     <title>RecordingTransaction recipe | Apache Fluo</title>
diff --git a/docs/fluo-recipes/1.0.0-incubating/row-hasher/index.html b/docs/fluo-recipes/1.1.0-incubating/row-hasher/index.html
similarity index 99%
copy from docs/fluo-recipes/1.0.0-incubating/row-hasher/index.html
copy to docs/fluo-recipes/1.1.0-incubating/row-hasher/index.html
index 4a8a94d..ff39194 100644
--- a/docs/fluo-recipes/1.0.0-incubating/row-hasher/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/row-hasher/index.html
@@ -8,7 +8,7 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/row-hasher/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/row-hasher/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
     <title>Row hash prefix recipe | Apache Fluo</title>
@@ -226,7 +226,7 @@ p:~
 <p>The split points are used to create tablets in the Accumulo table used by Fluo.
 Data and computation will spread very evenly across these tablets.  The
 Balancing config will spread the tablets evenly across the tablet servers,
-which will spread the computation evenly. See the <a href="/docs/fluo-recipes/1.0.0-incubating/table-optimization/">table optimizations</a>
+which will spread the computation evenly. See the <a href="/docs/fluo-recipes/1.1.0-incubating/table-optimization/">table optimizations</a>
 documentation for information on how to apply the optimizations.</p>
 
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/serialization/index.html b/docs/fluo-recipes/1.1.0-incubating/serialization/index.html
similarity index 97%
copy from docs/fluo-recipes/1.0.0-incubating/serialization/index.html
copy to docs/fluo-recipes/1.1.0-incubating/serialization/index.html
index ce9df3d..e238fa7 100644
--- a/docs/fluo-recipes/1.0.0-incubating/serialization/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/serialization/index.html
@@ -8,7 +8,7 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/serialization/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/serialization/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
     <title>Serializing Data | Apache Fluo</title>
@@ -120,7 +120,7 @@ serialization mechanism is configurable and defaults to using <a href="https://g
 <h2 id="custom-serialization">Custom Serialization</h2>
 
 <p>In order to use a custom serialization method, two steps need to be taken.  The
-first step is to implement <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/serialization/SimpleSerializer.html">SimpleSerializer</a>.  The second step is to
+first step is to implement <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/serialization/SimpleSerializer.html">SimpleSerializer</a>.  The second step is to
 configure Fluo Recipes to use the custom implementation.  This needs to be done
 before initializing Fluo.  Below is an example of how to do this.</p>
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/testing/index.html b/docs/fluo-recipes/1.1.0-incubating/spark/index.html
similarity index 85%
copy from docs/fluo-recipes/1.0.0-incubating/testing/index.html
copy to docs/fluo-recipes/1.1.0-incubating/spark/index.html
index 4fbc539..0dd1067 100644
--- a/docs/fluo-recipes/1.0.0-incubating/testing/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/spark/index.html
@@ -8,10 +8,10 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/testing/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/spark/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
-    <title>Testing | Apache Fluo</title>
+    <title>Apache Spark helper code | Apache Fluo</title>
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
@@ -110,18 +110,19 @@
   
 
   <header class="post-header">
-    <h2 class="post-title">Testing</h2>
+    <h2 class="post-title">Apache Spark helper code</h2>
   </header>
 
   <article id="page-content">
-    <p>Fluo includes MiniFluo which makes it possible to write an integeration test that
-runs against a real Fluo instance.  Fluo Recipes provides the following utility
-code for writing an integration test.</p>
-
-<ul>
-  <li><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/FluoITHelper.html">FluoITHelper</a> A class with utility methods for comparing expected data with whats in Fluo.</li>
-  <li><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/AccumuloExportITBase.html">AccumuloExportITBase</a> A base class for writing an integration test that exports data from Fluo to an external Accumulo table.</li>
-</ul>
+    <p>Fluo Recipes has some helper code for <a href="https://spark.apache.org">Apache Spark</a>.  Most of the helper code is currently
+related to bulk importing data into Accumulo.  This is useful for initializing a new Fluo table with
+historical data via Spark.  The Spark helper code is found at
+<a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-spark/1.1.0-incubating/">org/apache/fluo/recipes/spark/</a>.</p>
+
+<p>For information on using Spark to load data into Fluo, check out this <a href="https://fluo.apache.org/blog/2016/12/22/spark-load/">blog post</a>.</p>
+
+<p>If you know of other Spark+Fluo integration code that would be useful, then please consider <a href="https://github.com/apache/fluo-recipes/issues/new">opening
+an issue</a>.</p>
 
 
   </article>
diff --git a/docs/fluo-recipes/1.0.0-incubating/table-optimization/index.html b/docs/fluo-recipes/1.1.0-incubating/table-optimization/index.html
similarity index 92%
copy from docs/fluo-recipes/1.0.0-incubating/table-optimization/index.html
copy to docs/fluo-recipes/1.1.0-incubating/table-optimization/index.html
index f4097ec..db17b7b 100644
--- a/docs/fluo-recipes/1.0.0-incubating/table-optimization/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/table-optimization/index.html
@@ -8,7 +8,7 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/table-optimization/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/table-optimization/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
     <title>Fluo Table Optimization | Apache Fluo</title>
@@ -117,7 +117,7 @@
     <h2 id="background">Background</h2>
 
 <p>Recipes may need to make Accumulo specific table modifications for optimal
-performance.  Configuring the Accumulo tablet balancer and adding splits are
+performance.  Configuring the <a href="http://accumulo.apache.org/blog/2015/03/20/balancing-groups-of-tablets.html">Accumulo tablet balancer</a> and adding splits are
 two optimizations that are currently done.  Offering a standard way to do these
 optimizations makes it easier to use recipes correctly.  These optimizations
 are optional.  You could skip them for integration testing, but would probably
@@ -144,7 +144,7 @@ want to use them in production.</p>
 </code></pre>
 </div>
 
-<p><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> is provided in the Accumulo module of Fluo Recipes.</p>
+<p><a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> is provided in the Accumulo module of Fluo Recipes.</p>
 
 <h2 id="command-example">Command Example</h2>
 
@@ -168,7 +168,7 @@ fluo <span class="nb">exec </span>app1 org.apache.fluo.recipes.accumulo.cmds.Opt
 
 <h2 id="table-optimization-registry">Table optimization registry</h2>
 
-<p>Recipes register themself by calling <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/common/TableOptimizations.html">TableOptimizations.registerOptimization()</a>.  Anyone can use
+<p>Recipes register themself by calling <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/common/TableOptimizations.html">TableOptimizations.registerOptimization()</a>.  Anyone can use
 this mechanism, its not limited to use by exisitng recipes.</p>
 
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/testing/index.html b/docs/fluo-recipes/1.1.0-incubating/testing/index.html
similarity index 91%
copy from docs/fluo-recipes/1.0.0-incubating/testing/index.html
copy to docs/fluo-recipes/1.1.0-incubating/testing/index.html
index 4fbc539..8e3ab60 100644
--- a/docs/fluo-recipes/1.0.0-incubating/testing/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/testing/index.html
@@ -8,7 +8,7 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/testing/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/testing/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
     <title>Testing | Apache Fluo</title>
@@ -119,8 +119,8 @@ runs against a real Fluo instance.  Fluo Recipes provides the following utility
 code for writing an integration test.</p>
 
 <ul>
-  <li><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/FluoITHelper.html">FluoITHelper</a> A class with utility methods for comparing expected data with whats in Fluo.</li>
-  <li><a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-test/1.0.0-incubating/org/apache/fluo/recipes/test/AccumuloExportITBase.html">AccumuloExportITBase</a> A base class for writing an integration test that exports data from Fluo to an external Accumulo table.</li>
+  <li><a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-test/1.1.0-incubating/org/apache/fluo/recipes/test/FluoITHelper.html">FluoITHelper</a> A class with utility methods for comparing expected data with whats in Fluo.</li>
+  <li><a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-test/1.1.0-incubating/org/apache/fluo/recipes/test/AccumuloExportITBase.html">AccumuloExportITBase</a> A base class for writing an integration test that exports data from Fluo to an external Accumulo table.</li>
 </ul>
 
 
diff --git a/docs/fluo-recipes/1.0.0-incubating/transient/index.html b/docs/fluo-recipes/1.1.0-incubating/transient/index.html
similarity index 94%
copy from docs/fluo-recipes/1.0.0-incubating/transient/index.html
copy to docs/fluo-recipes/1.1.0-incubating/transient/index.html
index f3bc325..a9b3705 100644
--- a/docs/fluo-recipes/1.0.0-incubating/transient/index.html
+++ b/docs/fluo-recipes/1.1.0-incubating/transient/index.html
@@ -8,7 +8,7 @@
     <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
     <link rel="stylesheet" href="/css/fluo.css">
-    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.0.0-incubating/transient/">
+    <link rel="canonical" href="https://fluo.apache.org//docs/fluo-recipes/1.1.0-incubating/transient/">
     <link rel="icon" type="image/png" href="/resources/favicon.png">
     
     <title>Transient data | Apache Fluo</title>
@@ -124,7 +124,7 @@ time these transient ranges of the table will have a lot more delete markers
 than actual data if nothing is done.  If nothing is done, then processing
 transient data will get increasingly slower over time.</p>
 
-<p>These deleted markers can be cleaned up by forcing Accumulo to compact the
+<p>These delete markers can be cleaned up by forcing Accumulo to compact the
 Fluo table, which will run Fluos garbage collection iterator. However,
 compacting the entire table to clean up these ranges within a table is
 overkill. Alternatively,  Accumulo supports compacting ranges of a table.   So
@@ -136,9 +136,9 @@ standard way.</p>
 
 <h2 id="registering-transient-ranges">Registering Transient Ranges</h2>
 
-<p>Recipes like <a href="/docs/fluo-recipes/1.0.0-incubating/export-queue/">Export Queue</a> will automatically register
+<p>Recipes like <a href="/docs/fluo-recipes/1.1.0-incubating/export-queue/">Export Queue</a> will automatically register
 transient ranges when configured.  If you would like to register your own
-transient ranges, use <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/common/TransientRegistry.html">TransientRegistry</a>.  Below is a simple example of
+transient ranges, use <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/common/TransientRegistry.html">TransientRegistry</a>.  Below is a simple example of
 using this.</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
@@ -154,7 +154,7 @@ using this.</p>
 
 <p>Although you may never need to register transient ranges directly, you will
 need to periodically compact transient ranges if using a recipe that registers
-them.  Using <a href="https://static.javadoc.io/org.apache.fluo/fluo-recipes-accumulo/1.0.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> this can be done with one line of Java code
+them.  Using <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/org/apache/fluo/recipes/accumulo/ops/TableOperations.html">TableOperations</a> this can be done with one line of Java code
 like the following.</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">fluoConfig</span> <span class="o">=</span> <span class="o">...;</span>
diff --git a/docs/fluo/1.0.0-incubating/applications/index.html b/docs/fluo/1.0.0-incubating/applications/index.html
index 94f3b88..22ad10b 100644
--- a/docs/fluo/1.0.0-incubating/applications/index.html
+++ b/docs/fluo/1.0.0-incubating/applications/index.html
@@ -141,18 +141,18 @@ allow the scripts to use the versions of Hadoop, Accumulo, and Zookeeper install
 
 <h2 id="creating-a-fluo-client">Creating a Fluo client</h2>
 
-<p>To create a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>, you will need to provide it with a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object that is
+<p>To create a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>, you will need to provide it with a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object that is
 configured to connect to your Fluo instance.</p>
 
 <p>If you have access to the <a href="https://github.com/apache/fluo/blob/rel/fluo-1.0.0-incubating/modules/distribution/src/main/config/fluo.properties">fluo.properties</a> file that was used to configure your Fluo instance, you
-can use it to build a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object with all necessary properties which are all
+can use it to build a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object with all necessary properties which are all
 properties with the <code class="highlighter-rouge">fluo.client.*</code> prefix in <a href="https://github.com/apache/fluo/blob/rel/fluo-1.0.0-incubating/modules/distribution/src/main/config/fluo.properties">fluo.properties</a>:</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">config</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FluoConfiguration</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"fluo.properties"</span><span class="o">));</span>
 </code></pre>
 </div>
 
-<p>You can also create an empty <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object and set properties using Java:</p>
+<p>You can also create an empty <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object and set properties using Java:</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">config</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FluoConfiguration</span><span class="o">();</span>
 <span class="n">config</span><span class="o">.</span><span class="na">setAccumuloUser</span><span class="o">(</span><span class="s">"user"</span><span class="o">);</span>
@@ -161,8 +161,8 @@ properties with the <code class="highlighter-rouge">fluo.client.*</code> prefix
 </code></pre>
 </div>
 
-<p>Once you have <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object, pass it to the <code class="highlighter-rouge">newClient()</code> method of <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoFactory.html">FluoFactory</a> to
-create a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>:</p>
+<p>Once you have <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object, pass it to the <code class="highlighter-rouge">newClient()</code> method of <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoFactory.html">FluoFactory</a> to
+create a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>:</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">FluoFactory</span><span class="o">.</span><span class="na">newClient</span><span class="o">(</span><span class="n">config</span><span class="o">)</span>
 </code></pre>
@@ -200,7 +200,7 @@ following way. Defining the injection point is optional.</p>
 <p>To create an observer, follow these steps:</p>
 
 <ol>
-  <li>Create a class that extends <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/observer/AbstractObserver.html">AbstractObserver</a>.</li>
+  <li>Create a class that extends <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/observer/AbstractObserver.html">AbstractObserver</a>.</li>
   <li>Build a jar containing this class and include this jar in the <code class="highlighter-rouge">lib/</code> directory of your Fluo
 application.</li>
   <li>Configure your Fluo instance to use this observer by modifying the Observer section of
@@ -213,7 +213,7 @@ application.</li>
 <p>Each observer can have its own configuration. This is useful for the case of using the same
 observer code w/ different parameters. However for the case of sharing the same configuration
 across observers, fluo provides a simple mechanism to set and access application specific
-configuration. See the javadoc on <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.getAppConfiguration() for more details.</p>
+configuration. See the javadoc on <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.getAppConfiguration() for more details.</p>
 
 <h2 id="debugging-applications">Debugging Applications</h2>
 
diff --git a/docs/fluo/1.0.0-incubating/metrics/index.html b/docs/fluo/1.0.0-incubating/metrics/index.html
index 354e8be..cc3f26b 100644
--- a/docs/fluo/1.0.0-incubating/metrics/index.html
+++ b/docs/fluo/1.0.0-incubating/metrics/index.html
@@ -165,8 +165,8 @@ below.</p>
 
 <h2 id="application-specific-metrics">Application-specific metrics</h2>
 
-<p>Application metrics are implemented by retrieving a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/metrics/MetricsReporter.html">MetricsReporter</a> from an <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/observer/Observer.html">Observer</a>, <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/Loader.html">Loader</a>,
-or <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.  These metrics are named using the format <code class="highlighter-rouge">fluo.app.REPORTER_ID.METRIC</code>.</p>
+<p>Application metrics are implemented by retrieving a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/metrics/MetricsReporter.html">MetricsReporter</a> from an <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/observer/Observer.html">Observer</a>, <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/Loader.html">Loader</a>,
+or <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.0.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.  These metrics are named using the format <code class="highlighter-rouge">fluo.app.REPORTER_ID.METRIC</code>.</p>
 
 <h2 id="default-metrics">Default metrics</h2>
 
diff --git a/docs/fluo/1.1.0-incubating/applications/index.html b/docs/fluo/1.1.0-incubating/applications/index.html
index f12f3f9..e8b6a03 100644
--- a/docs/fluo/1.1.0-incubating/applications/index.html
+++ b/docs/fluo/1.1.0-incubating/applications/index.html
@@ -139,18 +139,18 @@ allow the scripts to use the versions of Hadoop, Accumulo, and Zookeeper install
 
 <h2 id="creating-a-fluo-client">Creating a Fluo client</h2>
 
-<p>To create a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>, you will need to provide it with a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object that is
+<p>To create a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>, you will need to provide it with a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object that is
 configured to connect to your Fluo instance.</p>
 
 <p>If you have access to the <a href="https://github.com/apache/fluo/blob/rel/fluo-1.1.0-incubating/modules/distribution/src/main/config/fluo.properties">fluo.properties</a> file that was used to configure your Fluo instance, you
-can use it to build a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object with all necessary properties which are all
+can use it to build a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object with all necessary properties which are all
 properties with the <code class="highlighter-rouge">fluo.client.*</code> prefix in <a href="https://github.com/apache/fluo/blob/rel/fluo-1.1.0-incubating/modules/distribution/src/main/config/fluo.properties">fluo.properties</a>:</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">config</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FluoConfiguration</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"fluo.properties"</span><span class="o">));</span>
 </code></pre>
 </div>
 
-<p>You can also create an empty <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object and set properties using Java:</p>
+<p>You can also create an empty <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object and set properties using Java:</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoConfiguration</span> <span class="n">config</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FluoConfiguration</span><span class="o">();</span>
 <span class="n">config</span><span class="o">.</span><span class="na">setAccumuloUser</span><span class="o">(</span><span class="s">"user"</span><span class="o">);</span>
@@ -159,8 +159,8 @@ properties with the <code class="highlighter-rouge">fluo.client.*</code> prefix
 </code></pre>
 </div>
 
-<p>Once you have <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object, pass it to the <code class="highlighter-rouge">newClient()</code> method of <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoFactory.html">FluoFactory</a> to
-create a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>:</p>
+<p>Once you have <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html">FluoConfiguration</a> object, pass it to the <code class="highlighter-rouge">newClient()</code> method of <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoFactory.html">FluoFactory</a> to
+create a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>:</p>
 
 <div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">FluoClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">FluoFactory</span><span class="o">.</span><span class="na">newClient</span><span class="o">(</span><span class="n">config</span><span class="o">)</span>
 </code></pre>
@@ -199,7 +199,7 @@ following way. Defining the injection point is optional.</p>
 
 <ol>
   <li>
-    <p>Create one or more classes that extend <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.html">Observer</a> like the example below. Please use <a href="http://www.slf4j.org/">slf4j</a> for
+    <p>Create one or more classes that extend <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.html">Observer</a> like the example below. Please use <a href="http://www.slf4j.org/">slf4j</a> for
 any logging in observers as <a href="http://www.slf4j.org/">slf4j</a> supports multiple logging implementations. This is
 necessary as Fluo applications have a hard requirement on <a href="http://logback.qos.ch/">logback</a> when running in YARN.</p>
 
@@ -217,7 +217,7 @@ necessary as Fluo applications have a hard requirement on <a href="http://logbac
     </div>
   </li>
   <li>
-    <p>Create a class that implements <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/ObserverProvider.html">ObserverProvider</a> like the example below.  The purpose of this
+    <p>Create a class that implements <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/ObserverProvider.html">ObserverProvider</a> like the example below.  The purpose of this
 class is associate a set Observers with columns that trigger the observers.  The class can
 register multiple observers.</p>
 
@@ -252,7 +252,7 @@ are used by transactions to know when to trigger observers.</li>
 <h2 id="application-configuration">Application Configuration</h2>
 
 <p>For configuring observers, fluo provides a simple mechanism to set and access application specific
-configuration.  See the javadoc on <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.getAppConfiguration() for more details.</p>
+configuration.  See the javadoc on <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.getAppConfiguration() for more details.</p>
 
 <h2 id="debugging-applications">Debugging Applications</h2>
 
diff --git a/docs/fluo/1.1.0-incubating/metrics/index.html b/docs/fluo/1.1.0-incubating/metrics/index.html
index 4cca3c8..5446996 100644
--- a/docs/fluo/1.1.0-incubating/metrics/index.html
+++ b/docs/fluo/1.1.0-incubating/metrics/index.html
@@ -163,8 +163,8 @@ below.</p>
 
 <h2 id="application-specific-metrics">Application-specific metrics</h2>
 
-<p>Application metrics are implemented by retrieving a <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/metrics/MetricsReporter.html">MetricsReporter</a> from an <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.html">Observer</a>, <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.html">Loader</a>,
-or <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.  These metrics are named using the format <code class="highlighter-rouge">fluo.app.REPORTER_ID.METRIC</code>.</p>
+<p>Application metrics are implemented by retrieving a <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/metrics/MetricsReporter.html">MetricsReporter</a> from an <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.html">Observer</a>, <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.html">Loader</a>,
+or <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html">FluoClient</a>.  These metrics are named using the format <code class="highlighter-rouge">fluo.app.REPORTER_ID.METRIC</code>.</p>
 
 <h2 id="default-metrics">Default metrics</h2>
 
diff --git a/docs/index.html b/docs/index.html
index 6fe061c..bf2af7a 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -124,6 +124,7 @@
 <h3 id="apache-fluo-recipes-documentation">Apache Fluo Recipes documentation</h3>
 
 <ul>
+  <li><a href="/docs/fluo-recipes/1.1.0-incubating/">1.1.0-incubating</a> - June 22, 2017</li>
   <li><a href="/docs/fluo-recipes/1.0.0-incubating/">1.0.0-incubating</a> - October 28, 2016</li>
 </ul>
 
diff --git a/feed.xml b/feed.xml
index bc16c41..20456f5 100644
--- a/feed.xml
+++ b/feed.xml
@@ -5,11 +5,276 @@
     <description></description>
     <link>https://fluo.apache.org//</link>
     <atom:link href="https://fluo.apache.org//feed.xml" rel="self" type="application/rss+xml" />
-    <pubDate>Mon, 26 Jun 2017 14:23:29 +0000</pubDate>
-    <lastBuildDate>Mon, 26 Jun 2017 14:23:29 +0000</lastBuildDate>
+    <pubDate>Thu, 29 Jun 2017 17:51:01 +0000</pubDate>
+    <lastBuildDate>Thu, 29 Jun 2017 17:51:01 +0000</lastBuildDate>
     <generator>Jekyll v3.3.1</generator>
     
       <item>
+        <title>Apache Fluo Recipes 1.1.0-incubating released</title>
+        <description>&lt;p&gt;Apache Fluo Recipes builds on the Apache Fluo API to provide libraries of common code for Fluo developers.&lt;/p&gt;
+
+&lt;p&gt;Below are resources for this release:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;
+    &lt;p&gt;Download a release tarball and verify by these &lt;a href=&quot;https://www.apache.org/info/verification&quot;&gt;procedures&lt;/a&gt; using these &lt;a href=&quot;https://www.apache.org/dist/incubator/fluo/KEYS&quot;&gt;KEYS&lt;/a&gt;&lt;/p&gt;
+
+    &lt;table&gt;
+      &lt;tbody&gt;
+        &lt;tr&gt;
+          &lt;td&gt;&lt;a href=&quot;https://www.apache.org/dyn/closer.lua/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release.tar.gz&quot;&gt;fluo-recipes-1.1.0-incubating-source-release.tar.gz&lt;/a&gt;&lt;/td&gt;
+          &lt;td&gt;&lt;a href=&quot;https://www.apache.org/dist/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release.tar.gz.asc&quot;&gt;ASC&lt;/a&gt; &lt;a href=&quot;https://www.apache.org/dist/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release.tar.gz.md5&quot;&gt;MD5&lt;/a&gt; &lt;a href=&quot;https://www.apache.org/dist/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release [...]
+        &lt;/tr&gt;
+      &lt;/tbody&gt;
+    &lt;/table&gt;
+  &lt;/li&gt;
+  &lt;li&gt;View the &lt;a href=&quot;/docs/fluo-recipes/1.1.0-incubating&quot;&gt;documentation&lt;/a&gt;&lt;/li&gt;
+  &lt;li&gt;Read the javadocs: &lt;a href=&quot;https://javadoc.io/doc/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/&quot; target=&quot;_blank&quot;&gt;core&lt;/a&gt;, &lt;a href=&quot;https://javadoc.io/doc/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/&quot; target=&quot;_blank&quot;&gt;accumulo&lt;/a&gt;, &lt;a href=&quot;https://javadoc.io/doc/org.apache.fluo/fluo-recipes-kryo/1.1.0-incubating/&quot; target=&quot;_blank&quot;&gt;kryo&lt;/a&gt;, &lt;a href=&quot;https:/ [...]
+  &lt;li&gt;Jars are available in &lt;a href=&quot;http://search.maven.org/#search|ga|1|fluo-recipes&quot;&gt;Maven Central&lt;/a&gt;.&lt;/li&gt;
+  &lt;li&gt;View the &lt;a href=&quot;https://github.com/apache/incubator-fluo-recipes/milestone/1?closed=1&quot;&gt;changes&lt;/a&gt;.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2 id=&quot;major-change&quot;&gt;Major Change&lt;/h2&gt;
+
+&lt;p&gt;For this release of Fluo Recipes, the work done in &lt;a href=&quot;https://github.com/apache/incubator-fluo-recipes/issues/127&quot;&gt;#127&lt;/a&gt;, &lt;a href=&quot;https://github.com/apache/incubator-fluo-recipes/pull/128&quot;&gt;#128&lt;/a&gt;, &lt;a href=&quot;https://github.com/apache/incubator-fluo-recipes/pull/130&quot;&gt;#130&lt;/a&gt;, and
+ &lt;a href=&quot;https://github.com/apache/incubator-fluo-recipes/pull/131&quot;&gt;#131&lt;/a&gt; to support the &lt;a href=&quot;/release/fluo-1.1.0-incubating/#new-api-for-configuring-observers&quot;&gt;new Observer API&lt;/a&gt; was
+the most significant change.  The Collision Free Map and &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/export/ExportQueue.html&quot;&gt;Export Queue&lt;/a&gt; required
+significant additions to support the new Observer API.  Since the name
+&lt;em&gt;Collision Free Map&lt;/em&gt; (CFM) is awful and it needed major API additions, the
+decision was made to deprecate it and offer the &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/combine/CombineQueue.html&quot;&gt;CombineQueue&lt;/a&gt;.  The
+CombineQueue offers the  same functionality as the CFM, but only supports the
+new observer API. The deprecated CFM still supports the old Observer API.  For
+the Export Queue, additions were made to its API and everything related to the
+old Observer API was deprecated.  All API changes in this release are backwards
+compatible with the 1.0.0 release.&lt;/p&gt;
+
+&lt;h3 id=&quot;example-of-new-apis&quot;&gt;Example of new APIs&lt;/h3&gt;
+
+&lt;p&gt;The new APIs in this release are much easier to use and now offer the ability
+to use lambdas.  This example attempts to shows this and does the following :&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;Counts events in three dimensions &lt;code class=&quot;highlighter-rouge&quot;&gt;(x,y,t)&lt;/code&gt;.&lt;/li&gt;
+  &lt;li&gt;Counts events in the two dimensional cross sections : &lt;code class=&quot;highlighter-rouge&quot;&gt;(x,y)&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;(x,t)&lt;/code&gt;, and &lt;code class=&quot;highlighter-rouge&quot;&gt;(y,t)&lt;/code&gt;.&lt;/li&gt;
+  &lt;li&gt;Prints out the counts as they change.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;To illustrate what this example accomplishes, for the following inputs :&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;2&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=3,y=3,t=5)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;1&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=3,y=3,t=5)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;4&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=7,y=3,t=5)&lt;/code&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;The example code should compute the following.&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;3&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=3,y=3,t=5)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;4&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=7,y=3,t=5)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;3&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=3,y=3)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;4&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=7,y=3)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;3&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=3,t=5)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;4&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(x=7,t=5)&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;7&lt;/code&gt; events at &lt;code class=&quot;highlighter-rouge&quot;&gt;(y=3,t=5)&lt;/code&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;The example achieves this using recipes as follows :&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;An export queue that prints out all changes in counts.&lt;/li&gt;
+  &lt;li&gt;Three combine queues for counting 2D cross sections.  All three queue data for export when counts change.&lt;/li&gt;
+  &lt;li&gt;A combine queue for counting 3D events.  It queues updates to the 2D combine queues when counts changes.  It also queues changes to the export queue.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Below is the Fluo &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/ObserverProvider.html&quot;&gt;ObserverProvider&lt;/a&gt; that wires everything together. The new
+Fluo and Fluo Recipes APIs enable wiring everything in Java code.  In the
+previous versions, this would have been a cumbersome combination of
+configuration and Java code.   With the new APIs, using lambdas is now an
+option.  This was not an option with the old APIs.&lt;/p&gt;
+
+&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;AppObserverProvider&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ObserverProvider&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
+
+  &lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
+  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;provide&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Registry&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;obsRegistry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Context&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;o&quot;& [...]
+    &lt;span class=&quot;n&quot;&gt;SimpleConfiguration&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;appCfg&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getAppConfiguration&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
+
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xytCq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o [...]
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xyCq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o& [...]
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ytCq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o& [...]
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xtCq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o& [...]
+
+    &lt;span class=&quot;n&quot;&gt;ExportQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;exportQ&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ExportQueue&lt;/span&gt;&lt;span class=&quot [...]
+
+    &lt;span class=&quot;c1&quot;&gt;// Some of Lambda's below could be inlined. To make the example a little more clear they were&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// not in order to show the types involved.&lt;/span&gt;
+
+    &lt;span class=&quot;c1&quot;&gt;// This is called by a combine queue when a value changes. The old and new value for the key&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// are passed. The lambda below queues changes for export.&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;ChangeObserver&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;expChangeObs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&q [...]
+      &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;change&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:& [...]
+        &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldVal&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getOldValue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;v&lt [...]
+        &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;newVal&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getNewValue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;v&lt [...]
+        &lt;span class=&quot;n&quot;&gt;exportQ&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getKey&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(),&lt;/span&gt; [...]
+      &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+    &lt;span class=&quot;o&quot;&gt;};&lt;/span&gt;
+
+    &lt;span class=&quot;c1&quot;&gt;// This lambda processes changes to 3D counts. It queues updates to the (x,y), (x,t), and (y,t)&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// 2D combine queues. For example if (x=3,y=2,t=5) changed from 4 to 7, it would queue&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// (x=3,y=2):+3, (x=3,t=5):+3, and (y=2,t=5):+3 to the 2D combine queues. The lambda also queues&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// exports for 3D count changes.&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;ChangeObserver&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;projectingChangeObs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&q [...]
+      &lt;span class=&quot;n&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xtUpdates&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;H [...]
+      &lt;span class=&quot;n&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ytUpdates&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;H [...]
+      &lt;span class=&quot;n&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xyUpdates&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;H [...]
+
+      &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;change&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:& [...]
+        &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fields&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getKey&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/ [...]
+        &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;delta&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getNewValue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;orElse&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0L [...]
+
+        &lt;span class=&quot;c1&quot;&gt;// While processing the changes for an entire bucket, opportunistically merge multiple&lt;/span&gt;
+        &lt;span class=&quot;c1&quot;&gt;// updates to the same 2D coordinates.&lt;/span&gt;
+        &lt;span class=&quot;n&quot;&gt;xtUpdates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;merge&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fields&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;:&quot;&lt; [...]
+        &lt;span class=&quot;n&quot;&gt;ytUpdates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;merge&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fields&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;:&quot;&lt; [...]
+        &lt;span class=&quot;n&quot;&gt;xyUpdates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;merge&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fields&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;:&quot;&lt; [...]
+      &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+
+      &lt;span class=&quot;c1&quot;&gt;// Queue updates to 2D combine queues.&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;xtCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xtUpdates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;ytCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ytUpdates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;xyCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xyUpdates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+
+      &lt;span class=&quot;c1&quot;&gt;// Queue changes for export&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;expChangeObs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;changes&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+    &lt;span class=&quot;o&quot;&gt;};&lt;/span&gt;
+
+    &lt;span class=&quot;c1&quot;&gt;// Register observer for 3D combine queue. The observer calls the provided combiner and&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// change observer when processing queued entries.&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;xytCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;registerObserver&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;obsRegistry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;SummingCombiner&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;gt;(),&lt;/span&gt; &lt;spa [...]
+
+    &lt;span class=&quot;c1&quot;&gt;// Register observers for all 2D combine queues.&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;xyCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;registerObserver&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;obsRegistry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;SummingCombiner&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;gt;(),&lt;/span&gt; &lt;span [...]
+    &lt;span class=&quot;n&quot;&gt;xtCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;registerObserver&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;obsRegistry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;SummingCombiner&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;gt;(),&lt;/span&gt; &lt;span [...]
+    &lt;span class=&quot;n&quot;&gt;ytCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;registerObserver&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;obsRegistry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;SummingCombiner&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;gt;(),&lt;/span&gt; &lt;span [...]
+
+    &lt;span class=&quot;c1&quot;&gt;// This functional interface is new in this release. The lambda below prints out data that was&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// successfully queued for export.&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;Exporter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;exporter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iter&lt;/span&gt; &lt;span class=&quot;o&quot; [...]
+      &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;hasNext&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;())&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
+        &lt;span class=&quot;n&quot;&gt;SequencedExport&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;seqExport&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iter&lt;/span&gt;&lt;span class=&q [...]
+        &lt;span class=&quot;n&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;EXPORT %-15s %-15s seq: %d\n&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;seqExport&lt;/span&gt;&lt;span [...]
+            &lt;span class=&quot;n&quot;&gt;seqExport&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getSequence&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;());&lt;/span&gt;
+      &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+    &lt;span class=&quot;o&quot;&gt;};&lt;/span&gt;
+
+    &lt;span class=&quot;c1&quot;&gt;// Register an observer to process queued export entries. The observer will call the lambda&lt;/span&gt;
+    &lt;span class=&quot;c1&quot;&gt;// created above.&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;exportQ&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;registerObserver&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;obsRegistry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;exporter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+
+&lt;p&gt;The code below does three things :&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;Starts MiniFluo.&lt;/li&gt;
+  &lt;li&gt;Configures the four combine queues and the export queue.&lt;/li&gt;
+  &lt;li&gt;Adds some data to the 3D combine queue twice.  Between the adds, it waits for processing to finish.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;    &lt;span class=&quot;n&quot;&gt;FluoConfiguration&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;props&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;FluoConfiguration&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setApplicationName&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;dimensions&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setMiniDataDir&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;target/mini&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;configure&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CQ_XYT_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;keyType&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;. [...]
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;configure&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CQ_XT_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;keyType&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.& [...]
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;configure&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CQ_XY_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;keyType&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.& [...]
+    &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;configure&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CQ_YT_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;keyType&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.& [...]
+
+    &lt;span class=&quot;c1&quot;&gt;// A new Fluent method of configuring export queues was introduced in 1.1.0&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;ExportQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;configure&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EXPORTQ_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;keyType&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;. [...]
+
+    &lt;span class=&quot;n&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setObserverProvider&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;AppObserverProvider&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+
+    &lt;span class=&quot;n&quot;&gt;FileUtils&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;deleteQuietly&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;target/mini&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;));&lt;/span&gt;
+
+    &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;MiniFluo&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;miniFluo&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;FluoFactory&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;newMiniFluo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p [...]
+         &lt;span class=&quot;n&quot;&gt;FluoClient&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;FluoFactory&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;newClient&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;miniFluo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;& [...]
+
+      &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xytCq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CombineQueue&lt;/span&gt;&lt;span class=&quot; [...]
+
+      &lt;span class=&quot;n&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Hash [...]
+      &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;x=3:y=5:t=23&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1L&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;x=5:y=5:t=27&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1L&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;x=3:y=5:t=27&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1L&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+
+      &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Transaction&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;newTransaction&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;())&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt; [...]
+        &lt;span class=&quot;n&quot;&gt;xytCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+        &lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;commit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
+      &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+
+      &lt;span class=&quot;n&quot;&gt;miniFluo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;waitForObservers&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;\n*** All notifications processed. ***\n&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+
+      &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;x=3:y=5:t=23&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1L&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;x=5:y=5:t=27&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1L&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;x=3:y=5:t=29&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1L&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+
+      &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Transaction&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;newTransaction&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;())&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt; [...]
+        &lt;span class=&quot;n&quot;&gt;xytCq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+        &lt;span class=&quot;n&quot;&gt;tx&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;commit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
+      &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+
+      &lt;span class=&quot;n&quot;&gt;miniFluo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;waitForObservers&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
+      &lt;span class=&quot;n&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;\n*** All notifications processed. ***\n&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
+    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+
+&lt;p&gt;Below is the output of running this example.&lt;/p&gt;
+
+&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;EXPORT x=3:y=5:t=23    old: - new: 1   seq: 8
+EXPORT x=3:y=5:t=27    old: - new: 1   seq: 9
+EXPORT x=5:y=5:t=27    old: - new: 1   seq: 9
+EXPORT x=3:y=5         old: - new: 2   seq: 37
+EXPORT y=5:t=27        old: - new: 2   seq: 42
+EXPORT x=3:t=23        old: - new: 1   seq: 36
+EXPORT x=5:t=27        old: - new: 1   seq: 36
+EXPORT x=3:t=27        old: - new: 1   seq: 38
+EXPORT x=5:y=5         old: - new: 1   seq: 39
+EXPORT y=5:t=23        old: - new: 1   seq: 41
+
+*** All notifications processed. ***
+
+EXPORT x=3:y=5:t=29    old: - new: 1   seq: 92
+EXPORT x=5:y=5:t=27    old: 1 new: -   seq: 92
+EXPORT x=3:y=5:t=23    old: 1 new: 2   seq: 93
+EXPORT y=5:t=27        old: 2 new: 1   seq: 109
+EXPORT x=3:y=5         old: 2 new: 4   seq: 110
+EXPORT y=5:t=23        old: 1 new: 2   seq: 111
+EXPORT y=5:t=29        old: - new: 1   seq: 108
+EXPORT x=3:t=29        old: - new: 1   seq: 105
+EXPORT x=3:t=23        old: 1 new: 2   seq: 106
+EXPORT x=5:y=5         old: 1 new: -   seq: 107
+EXPORT x=5:t=27        old: 1 new: -   seq: 106
+
+*** All notifications processed. ***
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+
+</description>
+        <pubDate>Thu, 22 Jun 2017 10:30:00 +0000</pubDate>
+        <link>https://fluo.apache.org//release/fluo-recipes-1.1.0-incubating/</link>
+        <guid isPermaLink="true">https://fluo.apache.org//release/fluo-recipes-1.1.0-incubating/</guid>
+        
+        
+        <category>release</category>
+        
+      </item>
+    
+      <item>
         <title>Apache Fluo 1.1.0-incubating released</title>
         <description>&lt;p&gt;Below are resources for this release:&lt;/p&gt;
 
@@ -219,11 +484,11 @@ related data. This blog post offers some tips to help you get started writing to
 
 &lt;p&gt;Spark automatically serializes Java objects that are needed for remote execution.  When trying to
 use Fluo with Spark its important to understand what will serialize properly and what will not.
-Classes used to load data into Fluo like &lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html&quot;&gt;FluoClient&lt;/a&gt; and &lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html&quot;&gt;LoaderExecutor&lt;/a&gt; are not suitable for
+Classes used to load data into Fluo like &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html&quot;&gt;FluoClient&lt;/a&gt; and &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html&quot;&gt;LoaderExecutor&lt;/a&gt; are not suitable for
 serialization.  These classes may have thread pools, resources in Zookeeper, transactions that are
 committing in the background, etc .  Therefore these classes must be instantiated at each remote process
 Spark creates.  One way to do this is with Spark’s &lt;code class=&quot;highlighter-rouge&quot;&gt;foreachParition&lt;/code&gt; method.  This method will
-execute code locally at each RDD partition. Within each partition, a &lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html&quot;&gt;LoaderExecutor&lt;/a&gt;
+execute code locally at each RDD partition. Within each partition, a &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html&quot;&gt;LoaderExecutor&lt;/a&gt;
 can be created.  That’s what the example below shows.&lt;/p&gt;
 
 &lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; 
@@ -278,7 +543,7 @@ partitioning methods in Spark will not accomplish this.&lt;/p&gt;
 &lt;p&gt;When following the bulk load approach, you would write &lt;a href=&quot;http://accumulo.apache.org/1.8/apidocs/org/apache/accumulo/core/data/Key.html&quot;&gt;Key&lt;/a&gt; and &lt;a href=&quot;http://accumulo.apache.org/1.8/apidocs/org/apache/accumulo/core/data/Value.html&quot;&gt;Value&lt;/a&gt; objects using the
 &lt;a href=&quot;http://accumulo.apache.org/1.8/apidocs/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormat.html&quot;&gt;AccumuloFileOutputFormat&lt;/a&gt;. Fluo provides the &lt;a href=&quot;https://github.com/apache/incubator-fluo/blob/rel/fluo-1.0.0-incubating/modules/mapreduce/src/main/java/org/apache/fluo/mapreduce/FluoKeyValueGenerator.java&quot;&gt;FluoKeyValueGenerator&lt;/a&gt; to create key/values in the
 Fluo data format.  Fluo Recipes builds on this and provides code that makes it easy to bulk import
-into Accumulo.  The &lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/fluo-recipes-spark/1.0.0-incubating/org/apache/fluo/recipes/spark/FluoSparkHelper.html#bulkImportRcvToFluo-org.apache.spark.api.java.JavaPairRDD-org.apache.fluo.recipes.spark.FluoSparkHelper.BulkImportOptions-&quot;&gt;FluoSparkHelper.bulkImportRcvToFluo()&lt;/a&gt; method will do the following :&lt;/p&gt;
+into Accumulo.  The &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-recipes-spark/1.1.0-incubating/org/apache/fluo/recipes/spark/FluoSparkHelper.html#bulkImportRcvToFluo-org.apache.spark.api.java.JavaPairRDD-org.apache.fluo.recipes.spark.FluoSparkHelper.BulkImportOptions-&quot;&gt;FluoSparkHelper.bulkImportRcvToFluo()&lt;/a&gt; method will do the following :&lt;/p&gt;
 
 &lt;ul&gt;
   &lt;li&gt;Repartition data using the split points in the Fluo table&lt;/li&gt;
@@ -288,8 +553,8 @@ into Accumulo.  The &lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/f
 &lt;/ul&gt;
 
 &lt;p&gt;The &lt;a href=&quot;https://github.com/astralway/webindex&quot;&gt;Webindex&lt;/a&gt; example uses bulk load to initialize its Fluo table using the code in Fluo Recipes.
-Webindex uses multiple &lt;a href=&quot;/docs/fluo-recipes/1.0.0-incubating/cfm/&quot;&gt;Collision Free Maps&lt;/a&gt; and initializes them using
-&lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/fluo-recipes-core/1.0.0-incubating/org/apache/fluo/recipes/core/map/CollisionFreeMap.html#getInitializer-java.lang.String-int-org.apache.fluo.recipes.core.serialization.SimpleSerializer-&quot;&gt;CollisionFreeMap.getInitializer()&lt;/a&gt;.  Webindex uses Spark to initialize the Fluo table with
+Webindex uses multiple &lt;a href=&quot;/docs/fluo-recipes/1.1.0-incubating/cfm/&quot;&gt;Collision Free Maps&lt;/a&gt; and initializes them using
+&lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/map/CollisionFreeMap.html#getInitializer-java.lang.String-int-org.apache.fluo.recipes.core.serialization.SimpleSerializer-&quot;&gt;CollisionFreeMap.getInitializer()&lt;/a&gt;.  Webindex uses Spark to initialize the Fluo table with
 historical data.  Webindex also uses Spark to execute load transactions in parallel for
 incrementally loading data.&lt;/p&gt;
 
@@ -456,8 +721,8 @@ modified any of the key values.&lt;/p&gt;
 
 &lt;p&gt;While designing the Fluo API we were uncertain about making Fluo’s basic &lt;a href=&quot;/tour/data-pojos/&quot;&gt;POJOs&lt;/a&gt; mutable or
 immutable.  In the end we decided to go with immutable types to make writing correct Fluo code
-easier.  One of the POJOs we created was &lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html&quot;&gt;Bytes&lt;/a&gt;,  an immutable wrapper around a byte array.  We
-also created &lt;a href=&quot;https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html&quot;&gt;BytesBuilder&lt;/a&gt;, which is analogous to StringBuilder, and makes it easy and efficient
+easier.  One of the POJOs we created was &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html&quot;&gt;Bytes&lt;/a&gt;,  an immutable wrapper around a byte array.  We
+also created &lt;a href=&quot;https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html&quot;&gt;BytesBuilder&lt;/a&gt;, which is analogous to StringBuilder, and makes it easy and efficient
 to construct Bytes.&lt;/p&gt;
 
 &lt;h3 id=&quot;what-about-the-copies&quot;&gt;What about the copies?&lt;/h3&gt;
@@ -1175,27 +1440,5 @@ root@instance16&amp;gt; du webindex_search
         
       </item>
     
-      <item>
-        <title>Fluo Recipes 1.0.0-beta-1 released</title>
-        <description>&lt;p&gt;This is the first release of Fluo Recipes which provides common code for Fluo developers.&lt;/p&gt;
-
-&lt;p&gt;Below are resources for this release:&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;View the &lt;a href=&quot;/docs/fluo-recipes/1.0.0-beta-1&quot;&gt;documentation&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;Read the javadocs:  &lt;a href=&quot;https://javadoc.io/doc/io.fluo/fluo-recipes-core/1.0.0-beta-1/&quot; target=&quot;_blank&quot;&gt;core&lt;/a&gt;, &lt;a href=&quot;https://javadoc.io/doc/io.fluo/fluo-recipes-accumulo/1.0.0-beta-1/&quot; target=&quot;_blank&quot;&gt;accumulo&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;Jars are available in &lt;a href=&quot;http://search.maven.org/#search|ga|1|fluo-recipes&quot;&gt;Maven Central&lt;/a&gt;.&lt;/li&gt;
-&lt;/ul&gt;
-
-</description>
-        <pubDate>Wed, 13 Jan 2016 15:30:00 +0000</pubDate>
-        <link>https://fluo.apache.org//release/fluo-recipes-1.0.0-beta-1/</link>
-        <guid isPermaLink="true">https://fluo.apache.org//release/fluo-recipes-1.0.0-beta-1/</guid>
-        
-        
-        <category>release</category>
-        
-      </item>
-    
   </channel>
 </rss>
diff --git a/index.html b/index.html
index dfd3203..45841b1 100644
--- a/index.html
+++ b/index.html
@@ -123,7 +123,7 @@
         <div class="post-header-home">
           <div class="row">
             <div class="col-sm-12">
-              <p><a href="/release/fluo-1.1.0-incubating/">Apache Fluo 1.1.0-incubating released</a> &nbsp;<small class="text-muted">Jun 2017</small></p>
+              <p><a href="/release/fluo-recipes-1.1.0-incubating/">Apache Fluo Recipes 1.1.0-incubating released</a> &nbsp;<small class="text-muted">Jun 2017</small></p>
             </div>
           </div>
         </div>
@@ -131,7 +131,7 @@
         <div class="post-header-home">
           <div class="row">
             <div class="col-sm-12">
-              <p><a href="/blog/2017/01/10/accumulo-summit-17/">Fluo talks at Accumulo Summit 2016</a> &nbsp;<small class="text-muted">Jan 2017</small></p>
+              <p><a href="/release/fluo-1.1.0-incubating/">Apache Fluo 1.1.0-incubating released</a> &nbsp;<small class="text-muted">Jun 2017</small></p>
             </div>
           </div>
         </div>
@@ -139,7 +139,7 @@
         <div class="post-header-home">
           <div class="row">
             <div class="col-sm-12">
-              <p><a href="/blog/2016/12/22/spark-load/">Loading data into Fluo using Apache Spark</a> &nbsp;<small class="text-muted">Dec 2016</small></p>
+              <p><a href="/blog/2017/01/10/accumulo-summit-17/">Fluo talks at Accumulo Summit 2016</a> &nbsp;<small class="text-muted">Jan 2017</small></p>
             </div>
           </div>
         </div>
@@ -147,7 +147,7 @@
         <div class="post-header-home">
           <div class="row">
             <div class="col-sm-12">
-              <p><a href="/blog/2016/11/10/immutable-bytes/">Java needs an immutable byte string</a> &nbsp;<small class="text-muted">Nov 2016</small></p>
+              <p><a href="/blog/2016/12/22/spark-load/">Loading data into Fluo using Apache Spark</a> &nbsp;<small class="text-muted">Dec 2016</small></p>
             </div>
           </div>
         </div>
@@ -155,7 +155,7 @@
         <div class="post-header-home">
           <div class="row">
             <div class="col-sm-12">
-              <p><a href="/release/fluo-recipes-1.0.0-incubating/">Apache Fluo Recipes 1.0.0-incubating released</a> &nbsp;<small class="text-muted">Oct 2016</small></p>
+              <p><a href="/blog/2016/11/10/immutable-bytes/">Java needs an immutable byte string</a> &nbsp;<small class="text-muted">Nov 2016</small></p>
             </div>
           </div>
         </div>
@@ -196,7 +196,7 @@
   </div>
   <div class="col-sm-4">
     <h4>Recipes API</h4>
-    <p>The <a href="/docs/fluo-recipes/1.0.0-incubating/">Fluo Recipes API</a> builds on the core API to offer complex transactional updates.</p>
+    <p>The <a href="/docs/fluo-recipes/1.1.0-incubating/">Fluo Recipes API</a> builds on the core API to offer complex transactional updates.</p>
   </div>
 </div>
 
diff --git a/news/index.html b/news/index.html
index adfeed4..c1b53be 100644
--- a/news/index.html
+++ b/news/index.html
@@ -113,6 +113,14 @@
     <h3 class="archive-section-header">2017</h3>
   
   <div class="row">
+    <div class="col-md-1"><p>Jun 22</div>
+    <div class="col-md-10"><p><a href="/release/fluo-recipes-1.1.0-incubating/" class="post-title-archive">Apache Fluo Recipes 1.1.0-incubating released</a></div>
+  </div>
+
+  
+  
+  
+  <div class="row">
     <div class="col-md-1"><p>Jun 12</div>
     <div class="col-md-10"><p><a href="/release/fluo-1.1.0-incubating/" class="post-title-archive">Apache Fluo 1.1.0-incubating released</a></div>
   </div>
diff --git a/release/fluo-recipes-1.1.0-incubating/index.html b/release/fluo-recipes-1.1.0-incubating/index.html
new file mode 100644
index 0000000..0c7bc03
--- /dev/null
+++ b/release/fluo-recipes-1.1.0-incubating/index.html
@@ -0,0 +1,388 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+
+    <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" integrity="sha384-h21C2fcDk/eFsW9sC9h0dhokq5pDinLNklTKoxIZRUn3+hvmgQSffLLQ4G4l2eEr" crossorigin="anonymous">
+    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
+    <link rel="stylesheet" href="/css/fluo.css">
+    <link rel="canonical" href="https://fluo.apache.org//release/fluo-recipes-1.1.0-incubating/">
+    <link rel="icon" type="image/png" href="/resources/favicon.png">
+    
+    <title>Apache Fluo Recipes 1.1.0-incubating released | Apache Fluo</title>
+
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+    <!-- Place your <script> tags here. -->
+
+<!-- Google Analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55360307-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+<script>window.twttr = (function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0],
+    t = window.twttr || {};
+  if (d.getElementById(id)) return t;
+  js = d.createElement(s);
+  js.id = id;
+  js.src = "https://platform.twitter.com/widgets.js";
+  fjs.parentNode.insertBefore(js, fjs);
+
+  t._e = [];
+  t.ready = function(f) {
+    t._e.push(f);
+  };
+
+  return t;
+}(document, "script", "twitter-wjs"));</script>
+
+  </head>
+  <body style="padding-top: 100px">
+    <nav id="fluo-nav" class="navbar navbar-default navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <div class="navbar-toggle-wrapper visible-xs">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".js-navbar-collapse">
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <a href="/" class="navbar-brand"><img id="fluo-img" height="40px" src="/resources/fluo-logo-dark.png" alt="Apache Fluo"></a>
+        </div>
+        <div class="collapse navbar-collapse js-navbar-collapse" style="margin-top: 20px">
+          <ul class="navbar-nav nav">
+            <li><a href="/release/">Releases</a></li>
+            <li><a href="/tour/">Tour</a></li>
+            <li><a href="/docs/">Docs</a></li>
+            <li><a href="/api/">API</a></li>
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="/getinvolved/">Get Involved</a></li>
+                <li><a href="/news/">News Archive</a></li>
+                <li><a href="/people/">People</a></li>
+                <li><a href="/related-projects/">Related Projects</a></li>
+                <li><a href="/poweredby/">Powered By</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Contributing<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="/how-to-contribute/">How To Contribute</a></li>
+                <li><a href="/release-process/">Release Process</a></li>
+              </ul>
+            </li>
+          </ul>
+          <ul class="navbar-nav nav navbar-right">
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://www.apache.org">Apache Homepage</a></li>
+                <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship</i></a></li>
+                <li><a href="https://www.apache.org/security">Security</a></li>
+                <li><a href="https://www.apache.org/foundation/thanks">Thanks</a></li>
+                <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </nav>
+    <div class="container">
+      <div class="row">
+          <div class="col-sm-12">
+            <div class="post-header">
+  <h2>Apache Fluo Recipes 1.1.0-incubating released</h2>
+  <p class="text-muted">22 Jun 2017</p>
+  <p><a class="twitter-share-button" href="https://twitter.com/intent/tweet?text=Apache Fluo Recipes 1.1.0-incubating released&url=https://fluo.apache.org//release/fluo-recipes-1.1.0-incubating/&via=ApacheFluo&related=ApacheFluo" rel="nofollow" target="_blank" title="Share on Twitter">Twitter</a></p>
+</div>
+
+
+
+<div class="post-content">
+  <p>Apache Fluo Recipes builds on the Apache Fluo API to provide libraries of common code for Fluo developers.</p>
+
+<p>Below are resources for this release:</p>
+
+<ul>
+  <li>
+    <p>Download a release tarball and verify by these <a href="https://www.apache.org/info/verification">procedures</a> using these <a href="https://www.apache.org/dist/incubator/fluo/KEYS">KEYS</a></p>
+
+    <table>
+      <tbody>
+        <tr>
+          <td><a href="https://www.apache.org/dyn/closer.lua/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release.tar.gz">fluo-recipes-1.1.0-incubating-source-release.tar.gz</a></td>
+          <td><a href="https://www.apache.org/dist/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release.tar.gz.asc">ASC</a> <a href="https://www.apache.org/dist/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release.tar.gz.md5">MD5</a> <a href="https://www.apache.org/dist/incubator/fluo/fluo-recipes/1.1.0-incubating/fluo-recipes-1.1.0-incubating-source-release.tar.gz.sha">SHA</a></td>
+        </tr>
+      </tbody>
+    </table>
+  </li>
+  <li>View the <a href="/docs/fluo-recipes/1.1.0-incubating">documentation</a></li>
+  <li>Read the javadocs: <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/" target="_blank">core</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-accumulo/1.1.0-incubating/" target="_blank">accumulo</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-kryo/1.1.0-incubating/" target="_blank">kryo</a>, <a href="https://javadoc.io/doc/org.apache.fluo/fluo-recipes-spark/1.1.0-incubating/" target="_blank">spark</a>, <a href="http [...]
+  <li>Jars are available in <a href="http://search.maven.org/#search|ga|1|fluo-recipes">Maven Central</a>.</li>
+  <li>View the <a href="https://github.com/apache/incubator-fluo-recipes/milestone/1?closed=1">changes</a>.</li>
+</ul>
+
+<h2 id="major-change">Major Change</h2>
+
+<p>For this release of Fluo Recipes, the work done in <a href="https://github.com/apache/incubator-fluo-recipes/issues/127">#127</a>, <a href="https://github.com/apache/incubator-fluo-recipes/pull/128">#128</a>, <a href="https://github.com/apache/incubator-fluo-recipes/pull/130">#130</a>, and
+ <a href="https://github.com/apache/incubator-fluo-recipes/pull/131">#131</a> to support the <a href="/release/fluo-1.1.0-incubating/#new-api-for-configuring-observers">new Observer API</a> was
+the most significant change.  The Collision Free Map and <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/export/ExportQueue.html">Export Queue</a> required
+significant additions to support the new Observer API.  Since the name
+<em>Collision Free Map</em> (CFM) is awful and it needed major API additions, the
+decision was made to deprecate it and offer the <a href="https://javadoc.io/page/org.apache.fluo/fluo-recipes-core/1.1.0-incubating/org/apache/fluo/recipes/core/combine/CombineQueue.html">CombineQueue</a>.  The
+CombineQueue offers the  same functionality as the CFM, but only supports the
+new observer API. The deprecated CFM still supports the old Observer API.  For
+the Export Queue, additions were made to its API and everything related to the
+old Observer API was deprecated.  All API changes in this release are backwards
+compatible with the 1.0.0 release.</p>
+
+<h3 id="example-of-new-apis">Example of new APIs</h3>
+
+<p>The new APIs in this release are much easier to use and now offer the ability
+to use lambdas.  This example attempts to shows this and does the following :</p>
+
+<ul>
+  <li>Counts events in three dimensions <code class="highlighter-rouge">(x,y,t)</code>.</li>
+  <li>Counts events in the two dimensional cross sections : <code class="highlighter-rouge">(x,y)</code>, <code class="highlighter-rouge">(x,t)</code>, and <code class="highlighter-rouge">(y,t)</code>.</li>
+  <li>Prints out the counts as they change.</li>
+</ul>
+
+<p>To illustrate what this example accomplishes, for the following inputs :</p>
+
+<ul>
+  <li><code class="highlighter-rouge">2</code> events at <code class="highlighter-rouge">(x=3,y=3,t=5)</code></li>
+  <li><code class="highlighter-rouge">1</code> events at <code class="highlighter-rouge">(x=3,y=3,t=5)</code></li>
+  <li><code class="highlighter-rouge">4</code> events at <code class="highlighter-rouge">(x=7,y=3,t=5)</code></li>
+</ul>
+
+<p>The example code should compute the following.</p>
+
+<ul>
+  <li><code class="highlighter-rouge">3</code> events at <code class="highlighter-rouge">(x=3,y=3,t=5)</code></li>
+  <li><code class="highlighter-rouge">4</code> events at <code class="highlighter-rouge">(x=7,y=3,t=5)</code></li>
+  <li><code class="highlighter-rouge">3</code> events at <code class="highlighter-rouge">(x=3,y=3)</code></li>
+  <li><code class="highlighter-rouge">4</code> events at <code class="highlighter-rouge">(x=7,y=3)</code></li>
+  <li><code class="highlighter-rouge">3</code> events at <code class="highlighter-rouge">(x=3,t=5)</code></li>
+  <li><code class="highlighter-rouge">4</code> events at <code class="highlighter-rouge">(x=7,t=5)</code></li>
+  <li><code class="highlighter-rouge">7</code> events at <code class="highlighter-rouge">(y=3,t=5)</code></li>
+</ul>
+
+<p>The example achieves this using recipes as follows :</p>
+
+<ul>
+  <li>An export queue that prints out all changes in counts.</li>
+  <li>Three combine queues for counting 2D cross sections.  All three queue data for export when counts change.</li>
+  <li>A combine queue for counting 3D events.  It queues updates to the 2D combine queues when counts changes.  It also queues changes to the export queue.</li>
+</ul>
+
+<p>Below is the Fluo <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/ObserverProvider.html">ObserverProvider</a> that wires everything together. The new
+Fluo and Fluo Recipes APIs enable wiring everything in Java code.  In the
+previous versions, this would have been a cumbersome combination of
+configuration and Java code.   With the new APIs, using lambdas is now an
+option.  This was not an option with the old APIs.</p>
+
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">AppObserverProvider</span> <span class="kd">implements</span> <span class="n">ObserverProvider</span> <span class="o">{</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">provide</span><span class="o">(</span><span class="n">Registry</span> <span class="n">obsRegistry</span><span class="o">,</span> <span class="n">Context</span> <span class="n">ctx</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">SimpleConfiguration</span> <span class="n">appCfg</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="na">getAppConfiguration</span><span class="o">();</span>
+
+    <span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">xytCq</span> <span class="o">=</span> <span class="n">CombineQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">Example</span><span class="o">.</span><span class="na">CQ_XYT_ID</span><span class="o">,</span> <span class="n">appCfg</span><spa [...]
+    <span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">xyCq</span> <span class="o">=</span> <span class="n">CombineQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">Example</span><span class="o">.</span><span class="na">CQ_XY_ID</span><span class="o">,</span> <span class="n">appCfg</span><span  [...]
+    <span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">ytCq</span> <span class="o">=</span> <span class="n">CombineQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">Example</span><span class="o">.</span><span class="na">CQ_YT_ID</span><span class="o">,</span> <span class="n">appCfg</span><span  [...]
+    <span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">xtCq</span> <span class="o">=</span> <span class="n">CombineQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">Example</span><span class="o">.</span><span class="na">CQ_XT_ID</span><span class="o">,</span> <span class="n">appCfg</span><span  [...]
+
+    <span class="n">ExportQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">&gt;</span> <span class="n">exportQ</span> <span class="o">=</span> <span class="n">ExportQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">Example</span><span class="o">.</span><span class="na">EXPORTQ_ID</span><span class="o">,</span> <span class="n">appCfg</span>< [...]
+
+    <span class="c1">// Some of Lambda's below could be inlined. To make the example a little more clear they were</span>
+    <span class="c1">// not in order to show the types involved.</span>
+
+    <span class="c1">// This is called by a combine queue when a value changes. The old and new value for the key</span>
+    <span class="c1">// are passed. The lambda below queues changes for export.</span>
+    <span class="n">ChangeObserver</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">expChangeObs</span> <span class="o">=</span> <span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">changes</span><span class="o">)</span> <span class="o">-&gt;</span> <span class="o">{</span>
+      <span class="k">for</span> <span class="o">(</span><span class="n">Change</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">change</span> <span class="o">:</span> <span class="n">changes</span><span class="o">)</span> <span class="o">{</span>
+        <span class="n">String</span> <span class="n">oldVal</span> <span class="o">=</span> <span class="n">change</span><span class="o">.</span><span class="na">getOldValue</span><span class="o">().</span><span class="na">map</span><span class="o">(</span><span class="n">v</span> <span class="o">-&gt;</span> <span class="s">"old: "</span> <span class="o">+</span> <span class="n">v</span><span class="o">).</span><span class="na">orElse</span><span class="o">(</span><span class="s">"old: [...]
+        <span class="n">String</span> <span class="n">newVal</span> <span class="o">=</span> <span class="n">change</span><span class="o">.</span><span class="na">getNewValue</span><span class="o">().</span><span class="na">map</span><span class="o">(</span><span class="n">v</span> <span class="o">-&gt;</span> <span class="s">"new: "</span> <span class="o">+</span> <span class="n">v</span><span class="o">).</span><span class="na">orElse</span><span class="o">(</span><span class="s">"new: [...]
+        <span class="n">exportQ</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">change</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">oldVal</span> <span class="o">+</span> <span class="s">" "</span> <span class="o">+</span> <span class="n">newVal</span><span class="o">);</span>
+      <span class="o">}</span>
+    <span class="o">};</span>
+
+    <span class="c1">// This lambda processes changes to 3D counts. It queues updates to the (x,y), (x,t), and (y,t)</span>
+    <span class="c1">// 2D combine queues. For example if (x=3,y=2,t=5) changed from 4 to 7, it would queue</span>
+    <span class="c1">// (x=3,y=2):+3, (x=3,t=5):+3, and (y=2,t=5):+3 to the 2D combine queues. The lambda also queues</span>
+    <span class="c1">// exports for 3D count changes.</span>
+    <span class="n">ChangeObserver</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">projectingChangeObs</span> <span class="o">=</span> <span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">changes</span><span class="o">)</span> <span class="o">-&gt;</span> <span class="o">{</span>
+      <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">xtUpdates</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;&gt;();</span>
+      <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">ytUpdates</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;&gt;();</span>
+      <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">xyUpdates</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;&gt;();</span>
+
+      <span class="k">for</span> <span class="o">(</span><span class="n">Change</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">&gt;</span> <span class="n">change</span> <span class="o">:</span> <span class="n">changes</span><span class="o">)</span> <span class="o">{</span>
+        <span class="n">String</span><span class="o">[]</span> <span class="n">fields</span> <span class="o">=</span> <span class="n">change</span><span class="o">.</span><span class="na">getKey</span><span class="o">().</span><span class="na">split</span><span class="o">(</span><span class="s">":"</span><span class="o">);</span>
+        <span class="kt">long</span> <span class="n">delta</span> <span class="o">=</span> <span class="n">change</span><span class="o">.</span><span class="na">getNewValue</span><span class="o">().</span><span class="na">orElse</span><span class="o">(</span><span class="mi">0L</span><span class="o">)</span> <span class="o">-</span> <span class="n">change</span><span class="o">.</span><span class="na">getOldValue</span><span class="o">().</span><span class="na">orElse</span><span class=" [...]
+
+        <span class="c1">// While processing the changes for an entire bucket, opportunistically merge multiple</span>
+        <span class="c1">// updates to the same 2D coordinates.</span>
+        <span class="n">xtUpdates</span><span class="o">.</span><span class="na">merge</span><span class="o">(</span><span class="n">fields</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span> <span class="o">+</span> <span class="s">":"</span> <span class="o">+</span> <span class="n">fields</span><span class="o">[</span><span class="mi">2</span><span class="o">],</span> <span class="n">delta</span><span class="o">,</span> <span class="nl">Long:</span><span cla [...]
+        <span class="n">ytUpdates</span><span class="o">.</span><span class="na">merge</span><span class="o">(</span><span class="n">fields</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span> <span class="o">+</span> <span class="s">":"</span> <span class="o">+</span> <span class="n">fields</span><span class="o">[</span><span class="mi">2</span><span class="o">],</span> <span class="n">delta</span><span class="o">,</span> <span class="nl">Long:</span><span cla [...]
+        <span class="n">xyUpdates</span><span class="o">.</span><span class="na">merge</span><span class="o">(</span><span class="n">fields</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span> <span class="o">+</span> <span class="s">":"</span> <span class="o">+</span> <span class="n">fields</span><span class="o">[</span><span class="mi">1</span><span class="o">],</span> <span class="n">delta</span><span class="o">,</span> <span class="nl">Long:</span><span cla [...]
+      <span class="o">}</span>
+
+      <span class="c1">// Queue updates to 2D combine queues.</span>
+      <span class="n">xtCq</span><span class="o">.</span><span class="na">addAll</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">xtUpdates</span><span class="o">);</span>
+      <span class="n">ytCq</span><span class="o">.</span><span class="na">addAll</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">ytUpdates</span><span class="o">);</span>
+      <span class="n">xyCq</span><span class="o">.</span><span class="na">addAll</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">xyUpdates</span><span class="o">);</span>
+
+      <span class="c1">// Queue changes for export</span>
+      <span class="n">expChangeObs</span><span class="o">.</span><span class="na">process</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">changes</span><span class="o">);</span>
+    <span class="o">};</span>
+
+    <span class="c1">// Register observer for 3D combine queue. The observer calls the provided combiner and</span>
+    <span class="c1">// change observer when processing queued entries.</span>
+    <span class="n">xytCq</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span> <span class="k">new</span> <span class="n">SummingCombiner</span><span class="o">&lt;&gt;(),</span> <span class="n">projectingChangeObs</span><span class="o">);</span>
+
+    <span class="c1">// Register observers for all 2D combine queues.</span>
+    <span class="n">xyCq</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span> <span class="k">new</span> <span class="n">SummingCombiner</span><span class="o">&lt;&gt;(),</span> <span class="n">expChangeObs</span><span class="o">);</span>
+    <span class="n">xtCq</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span> <span class="k">new</span> <span class="n">SummingCombiner</span><span class="o">&lt;&gt;(),</span> <span class="n">expChangeObs</span><span class="o">);</span>
+    <span class="n">ytCq</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span> <span class="k">new</span> <span class="n">SummingCombiner</span><span class="o">&lt;&gt;(),</span> <span class="n">expChangeObs</span><span class="o">);</span>
+
+    <span class="c1">// This functional interface is new in this release. The lambda below prints out data that was</span>
+    <span class="c1">// successfully queued for export.</span>
+    <span class="n">Exporter</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">&gt;</span> <span class="n">exporter</span> <span class="o">=</span> <span class="n">iter</span> <span class="o">-&gt;</span> <span class="o">{</span>
+      <span class="k">while</span> <span class="o">(</span><span class="n">iter</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
+        <span class="n">SequencedExport</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">&gt;</span> <span class="n">seqExport</span> <span class="o">=</span> <span class="n">iter</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
+        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"EXPORT %-15s %-15s seq: %d\n"</span><span class="o">,</span> <span class="n">seqExport</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">seqExport</span><span class="o">.</span><span class="na">getValue</span><span class="o">(),</span>
+            <span class="n">seqExport</span><span class="o">.</span><span class="na">getSequence</span><span class="o">());</span>
+      <span class="o">}</span>
+    <span class="o">};</span>
+
+    <span class="c1">// Register an observer to process queued export entries. The observer will call the lambda</span>
+    <span class="c1">// created above.</span>
+    <span class="n">exportQ</span><span class="o">.</span><span class="na">registerObserver</span><span class="o">(</span><span class="n">obsRegistry</span><span class="o">,</span> <span class="n">exporter</span><span class="o">);</span>
+  <span class="o">}</span>
+<span class="o">}</span>
+</code></pre>
+</div>
+
+<p>The code below does three things :</p>
+
+<ul>
+  <li>Starts MiniFluo.</li>
+  <li>Configures the four combine queues and the export queue.</li>
+  <li>Adds some data to the 3D combine queue twice.  Between the adds, it waits for processing to finish.</li>
+</ul>
+
+<div class="language-java highlighter-rouge"><pre class="highlight"><code>    <span class="n">FluoConfiguration</span> <span class="n">props</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FluoConfiguration</span><span class="o">();</span>
+    <span class="n">props</span><span class="o">.</span><span class="na">setApplicationName</span><span class="o">(</span><span class="s">"dimensions"</span><span class="o">);</span>
+    <span class="n">props</span><span class="o">.</span><span class="na">setMiniDataDir</span><span class="o">(</span><span class="s">"target/mini"</span><span class="o">);</span>
+
+    <span class="n">CombineQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">CQ_XYT_ID</span><span class="o">).</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">valueType</span><span class="o">(</span><span class="n">Long</span><span class="o">.</span><span class="na">class</span><span class="o"> [...]
+    <span class="n">CombineQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">CQ_XT_ID</span><span class="o">).</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">valueType</span><span class="o">(</span><span class="n">Long</span><span class="o">.</span><span class="na">class</span><span class="o">) [...]
+    <span class="n">CombineQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">CQ_XY_ID</span><span class="o">).</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">valueType</span><span class="o">(</span><span class="n">Long</span><span class="o">.</span><span class="na">class</span><span class="o">) [...]
+    <span class="n">CombineQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">CQ_YT_ID</span><span class="o">).</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">valueType</span><span class="o">(</span><span class="n">Long</span><span class="o">.</span><span class="na">class</span><span class="o">) [...]
+
+    <span class="c1">// A new Fluent method of configuring export queues was introduced in 1.1.0</span>
+    <span class="n">ExportQueue</span><span class="o">.</span><span class="na">configure</span><span class="o">(</span><span class="n">EXPORTQ_ID</span><span class="o">).</span><span class="na">keyType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">valueType</span><span class="o">(</span><span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o [...]
+
+    <span class="n">props</span><span class="o">.</span><span class="na">setObserverProvider</span><span class="o">(</span><span class="n">AppObserverProvider</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+
+    <span class="n">FileUtils</span><span class="o">.</span><span class="na">deleteQuietly</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"target/mini"</span><span class="o">));</span>
+
+    <span class="k">try</span> <span class="o">(</span><span class="n">MiniFluo</span> <span class="n">miniFluo</span> <span class="o">=</span> <span class="n">FluoFactory</span><span class="o">.</span><span class="na">newMiniFluo</span><span class="o">(</span><span class="n">props</span><span class="o">);</span> 
+         <span class="n">FluoClient</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FluoFactory</span><span class="o">.</span><span class="na">newClient</span><span class="o">(</span><span class="n">miniFluo</span><span class="o">.</span><span class="na">getClientConfiguration</span><span class="o">()))</span> <span class="o">{</span>
+
+      <span class="n">CombineQueue</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span><span class="n">Long</span><span class="o">&gt;</span> <span class="n">xytCq</span> <span class="o">=</span> <span class="n">CombineQueue</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="n">CQ_XYT_ID</span><span class="o">,</span> <span class="n">fc</span><span class="o">.</span><span class="na">getAppConfiguration</ [...]
+
+      <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span><span class="n">Long</span><span class="o">&gt;</span> <span class="n">updates</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;&gt;();</span>
+      <span class="n">updates</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"x=3:y=5:t=23"</span><span class="o">,</span> <span class="mi">1L</span><span class="o">);</span>
+      <span class="n">updates</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"x=5:y=5:t=27"</span><span class="o">,</span> <span class="mi">1L</span><span class="o">);</span>
+      <span class="n">updates</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"x=3:y=5:t=27"</span><span class="o">,</span> <span class="mi">1L</span><span class="o">);</span>
+
+      <span class="k">try</span> <span class="o">(</span><span class="n">Transaction</span> <span class="n">tx</span> <span class="o">=</span> <span class="n">fc</span><span class="o">.</span><span class="na">newTransaction</span><span class="o">())</span> <span class="o">{</span>
+        <span class="n">xytCq</span><span class="o">.</span><span class="na">addAll</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">updates</span><span class="o">);</span>
+        <span class="n">tx</span><span class="o">.</span><span class="na">commit</span><span class="o">();</span>
+      <span class="o">}</span>
+
+      <span class="n">miniFluo</span><span class="o">.</span><span class="na">waitForObservers</span><span class="o">();</span>
+      <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"\n*** All notifications processed. ***\n"</span><span class="o">);</span>
+
+      <span class="n">updates</span><span class="o">.</span><span class="na">clear</span><span class="o">();</span>
+      <span class="n">updates</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"x=3:y=5:t=23"</span><span class="o">,</span> <span class="mi">1L</span><span class="o">);</span>
+      <span class="n">updates</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"x=5:y=5:t=27"</span><span class="o">,</span> <span class="o">-</span><span class="mi">1L</span><span class="o">);</span>
+      <span class="n">updates</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"x=3:y=5:t=29"</span><span class="o">,</span> <span class="mi">1L</span><span class="o">);</span>
+
+      <span class="k">try</span> <span class="o">(</span><span class="n">Transaction</span> <span class="n">tx</span> <span class="o">=</span> <span class="n">fc</span><span class="o">.</span><span class="na">newTransaction</span><span class="o">())</span> <span class="o">{</span>
+        <span class="n">xytCq</span><span class="o">.</span><span class="na">addAll</span><span class="o">(</span><span class="n">tx</span><span class="o">,</span> <span class="n">updates</span><span class="o">);</span>
+        <span class="n">tx</span><span class="o">.</span><span class="na">commit</span><span class="o">();</span>
+      <span class="o">}</span>
+
+      <span class="n">miniFluo</span><span class="o">.</span><span class="na">waitForObservers</span><span class="o">();</span>
+      <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"\n*** All notifications processed. ***\n"</span><span class="o">);</span>
+    <span class="o">}</span>
+</code></pre>
+</div>
+
+<p>Below is the output of running this example.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>EXPORT x=3:y=5:t=23    old: - new: 1   seq: 8
+EXPORT x=3:y=5:t=27    old: - new: 1   seq: 9
+EXPORT x=5:y=5:t=27    old: - new: 1   seq: 9
+EXPORT x=3:y=5         old: - new: 2   seq: 37
+EXPORT y=5:t=27        old: - new: 2   seq: 42
+EXPORT x=3:t=23        old: - new: 1   seq: 36
+EXPORT x=5:t=27        old: - new: 1   seq: 36
+EXPORT x=3:t=27        old: - new: 1   seq: 38
+EXPORT x=5:y=5         old: - new: 1   seq: 39
+EXPORT y=5:t=23        old: - new: 1   seq: 41
+
+*** All notifications processed. ***
+
+EXPORT x=3:y=5:t=29    old: - new: 1   seq: 92
+EXPORT x=5:y=5:t=27    old: 1 new: -   seq: 92
+EXPORT x=3:y=5:t=23    old: 1 new: 2   seq: 93
+EXPORT y=5:t=27        old: 2 new: 1   seq: 109
+EXPORT x=3:y=5         old: 2 new: 4   seq: 110
+EXPORT y=5:t=23        old: 1 new: 2   seq: 111
+EXPORT y=5:t=29        old: - new: 1   seq: 108
+EXPORT x=3:t=29        old: - new: 1   seq: 105
+EXPORT x=3:t=23        old: 1 new: 2   seq: 106
+EXPORT x=5:y=5         old: 1 new: -   seq: 107
+EXPORT x=5:t=27        old: 1 new: -   seq: 106
+
+*** All notifications processed. ***
+</code></pre>
+</div>
+
+
+</div>
+
+<div>
+  <p class="text-muted">View all releases in the <a href="/release/">release archive</a></p>
+</div>
+
+          </div>
+      </div>
+      <hr>
+      <div class="row footer">
+        <div class="col-sm-12 text-center">
+          <div class="center-block">
+          <a href="https://apache.org"><img src="/resources/feather.png" alt="Apache"></a>
+          Copyright &copy; 2017 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache&nbsp;License,&nbsp;Version&nbsp;2.0</a>
+          </div>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/release/index.html b/release/index.html
index 44393b1..d87d394 100644
--- a/release/index.html
+++ b/release/index.html
@@ -114,6 +114,9 @@
 
 <ul>
   <li>
+    <p><a href="/release/fluo-recipes-1.1.0-incubating/">fluo-recipes-1.1.0-incubating</a> - 22 Jun 2017</p>
+  </li>
+  <li>
     <p><a href="/release/fluo-1.1.0-incubating/">fluo-1.1.0-incubating</a> - 12 Jun 2017</p>
   </li>
   <li>
diff --git a/tour/application-configuration/index.html b/tour/application-configuration/index.html
index e194f00..7ce8655 100644
--- a/tour/application-configuration/index.html
+++ b/tour/application-configuration/index.html
@@ -120,10 +120,10 @@ initialization any Fluo client or Observer can access the configuration.</p>
 <h2 id="application-configuration">Application Configuration</h2>
 
 <p>To use application configuration, set properties with the prefix <code class="highlighter-rouge">fluo.app</code> in your configuration
-file before initialization.  Alternatively use <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html#getAppConfiguration--">FluoConfiguration.getAppConfiguration()</a> to
+file before initialization.  Alternatively use <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html#getAppConfiguration--">FluoConfiguration.getAppConfiguration()</a> to
 set these properties programmatically.  After Fluo is initialized this information can be accessed
-anywhere by calling <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html#getAppConfiguration--">FluoClient.getAppConfiguration()</a>,
-<a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.Context.html#getAppConfiguration--">Observer.Context.getAppConfigurtaion()</a>, or <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.Context.html#getAppConfiguration--">Loader.Context.getAppConfiguration()</a>.</p>
+anywhere by calling <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/FluoClient.html#getAppConfiguration--">FluoClient.getAppConfiguration()</a>,
+<a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.Context.html#getAppConfiguration--">Observer.Context.getAppConfigurtaion()</a>, or <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.Context.html#getAppConfiguration--">Loader.Context.getAppConfiguration()</a>.</p>
 
 <p>The following is a simple example of using application config.   This example sets some application
 config before initialization.  After initialization the configuration is accessed via
@@ -157,8 +157,8 @@ table5
 
 <p>If you want instances of an Observer to behave differently and share code, one way to accomplish
 this is with per observer configuration.  When setting up an observer call one of the
-<a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/ObserverSpecification.html">ObserverSpecification</a> methods that takes configuration.  When an observer is initialized it
-can access this configuration by calling <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.Context.html#getObserverConfiguration--">Observer.Context.getObserverConfiguration()</a>.</p>
+<a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/ObserverSpecification.html">ObserverSpecification</a> methods that takes configuration.  When an observer is initialized it
+can access this configuration by calling <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/observer/Observer.Context.html#getObserverConfiguration--">Observer.Context.getObserverConfiguration()</a>.</p>
 
 <p>The code below shows an example of setting configuration for an Observer.  This example simulates an
 observer that can export rows to a mysql table. The example configures two instances of an observer
diff --git a/tour/basic-read-write/index.html b/tour/basic-read-write/index.html
index 8482225..e1dca30 100644
--- a/tour/basic-read-write/index.html
+++ b/tour/basic-read-write/index.html
@@ -139,9 +139,9 @@ and write data.  It can only read data that was committed before it started.  Da
 transaction will only be written when <code class="highlighter-rouge">commit()</code> is called.</p>
 
 <p>A <strong>Snapshot</strong> is created to read the data previously written by the Transaction.  Snapshots only see
-data committed before the snapshot was created.  The code calls <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a> which
+data committed before the snapshot was created.  The code calls <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a> which
 is a convenience method that works with strings.  Internally Fluo only deals with bytes and its
-<a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#get-org.apache.fluo.api.data.Bytes-org.apache.fluo.api.data.Column-">get(Bytes, Column)</a> method returns <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a>.   The Fluo methods that take and return Strings
+<a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#get-org.apache.fluo.api.data.Bytes-org.apache.fluo.api.data.Column-">get(Bytes, Column)</a> method returns <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a>.   The Fluo methods that take and return Strings
 assume UTF-8 encoding when converting to bytes.</p>
 
 <p>Transactions and snapshots allocate resources and therefore have <code class="highlighter-rouge">close()</code> methods.  The
diff --git a/tour/data-pojos/index.html b/tour/data-pojos/index.html
index ffef6c1..1474f85 100644
--- a/tour/data-pojos/index.html
+++ b/tour/data-pojos/index.html
@@ -112,16 +112,16 @@
 </div>
 <div id="tour-content">
   <p>Fluo has a few simple POJOs that are used throughout the API.  These classes
-are found in <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/package-summary.html">org.apache.fluo.api.data</a>.  All of these types are
+are found in <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/package-summary.html">org.apache.fluo.api.data</a>.  All of these types are
 immutable. Except for Span, all of the types are Comparable and have hash
-code and equals implementations.  These types work with <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a> and Java
+code and equals implementations.  These types work with <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a> and Java
 Strings.  Internally, Fluo only works with bytes.  All API methods that deal
 with String will convert back and forth to and from bytes using UTF-8.</p>
 
-<p><a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a> is modeled after Java String.  Its an immutable wrapper around <code class="highlighter-rouge">byte[]</code>
-like String is an immutable wrapper around <code class="highlighter-rouge">char[]</code>.  To make building <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a>
-more efficient and easier, there is a reusable <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html">BytesBuilder</a> that is modeled
-after StringBuilder.  Call <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html#builder--">Bytes.builder()</a> to create a new <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html">BytesBuilder</a>.</p>
+<p><a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a> is modeled after Java String.  Its an immutable wrapper around <code class="highlighter-rouge">byte[]</code>
+like String is an immutable wrapper around <code class="highlighter-rouge">char[]</code>.  To make building <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html">Bytes</a>
+more efficient and easier, there is a reusable <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html">BytesBuilder</a> that is modeled
+after StringBuilder.  Call <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.html#builder--">Bytes.builder()</a> to create a new <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Bytes.BytesBuilder.html">BytesBuilder</a>.</p>
 
 
 </div>
diff --git a/tour/loader-executer/index.html b/tour/loader-executer/index.html
index b939a12..62a3998 100644
--- a/tour/loader-executer/index.html
+++ b/tour/loader-executer/index.html
@@ -111,13 +111,13 @@
   <p class="text-muted">Tour page 16 of 26</p>
 </div>
 <div id="tour-content">
-  <p>Fluo provides a simple mechanism to help load data called the <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html">LoaderExecutor</a>.  Loading data
+  <p>Fluo provides a simple mechanism to help load data called the <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/LoaderExecutor.html">LoaderExecutor</a>.  Loading data
 into Fluo requires a transaction.  The LoaderExecutor manages creating, committing, and retrying
 transactions when collisions occur.  It also runs transactions in multiple threads and batches
 commit processing of separate transactions for efficiency.  FluoConfiguration provides two methods
-for configuring LoaderExecutors <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html#setLoaderQueueSize-int-">setLoaderQueueSize()</a> and <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html#setLoaderThreads-int-">setLoaderThreads()</a>.</p>
+for configuring LoaderExecutors <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html#setLoaderQueueSize-int-">setLoaderQueueSize()</a> and <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/config/FluoConfiguration.html#setLoaderThreads-int-">setLoaderThreads()</a>.</p>
 
-<p>Objects that implement <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.html">Loader</a> are given to a LoaderExecutor.  The <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.html#load-org.apache.fluo.api.client.TransactionBase-org.apache.fluo.api.client.Loader.Context-">load()</a> method will
+<p>Objects that implement <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.html">Loader</a> are given to a LoaderExecutor.  The <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/Loader.html#load-org.apache.fluo.api.client.TransactionBase-org.apache.fluo.api.client.Loader.Context-">load()</a> method will
 eventually be called on these objects at which point the passed in transactions can be used to load
 data.  When <code class="highlighter-rouge">close()</code> is called on a LoaderExecutor, it waits for all running and queued work to
 finish.</p>
diff --git a/tour/multi-get/index.html b/tour/multi-get/index.html
index f6acfd7..64e73cc 100644
--- a/tour/multi-get/index.html
+++ b/tour/multi-get/index.html
@@ -122,21 +122,21 @@ difference.  The example code performs the following task.</p>
 columns.  Uses integers for the row and columns names.</li>
   <li>Gets 100 columns from a single row in the following ways.  Times each way.
     <ul>
-      <li>In a loop calls  <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a>.</li>
-      <li>Calls <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-java.util.Set-">gets(CharSequence, Set&lt;Column&gt;)</a> once</li>
+      <li>In a loop calls  <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a>.</li>
+      <li>Calls <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-java.util.Set-">gets(CharSequence, Set&lt;Column&gt;)</a> once</li>
     </ul>
   </li>
   <li>Gets 100 columns from 3 rows in the following ways.  Times each way.
     <ul>
-      <li>For three rows, loops over 100 columns calling  <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a></li>
-      <li>Calls <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.util.Collection-java.util.Set-">gets(Collection&lt;? extends CharSequence&gt;, Set&lt;Column&gt;)</a> once</li>
+      <li>For three rows, loops over 100 columns calling  <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a></li>
+      <li>Calls <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.util.Collection-java.util.Set-">gets(Collection&lt;? extends CharSequence&gt;, Set&lt;Column&gt;)</a> once</li>
     </ul>
   </li>
   <li>Generates 100 row column pairs, where each pair is a random row and a random column. Gets each</li>
   <li>pair in the following ways.  Times each way.
     <ul>
-      <li>For each pair calls <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a></li>
-      <li>Calls <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.util.Collection-">gets(Collection&lt;RowColumn&gt;)</a> once</li>
+      <li>For each pair calls <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.lang.CharSequence-org.apache.fluo.api.data.Column-">gets(CharSequence, Column)</a></li>
+      <li>Calls <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#gets-java.util.Collection-">gets(Collection&lt;RowColumn&gt;)</a> once</li>
     </ul>
   </li>
 </ul>
diff --git a/tour/scanning/index.html b/tour/scanning/index.html
index e5fa6c0..0a1b9ee 100644
--- a/tour/scanning/index.html
+++ b/tour/scanning/index.html
@@ -112,11 +112,11 @@
 </div>
 <div id="tour-content">
   <p>In some situations, you may want to read a range of data instead of specific rows and columns.  For
-this case, Fluo supports <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#scanner--">creating scanners</a> over ranges.   These scanners implement Java Iterable and
+this case, Fluo supports <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/client/SnapshotBase.html#scanner--">creating scanners</a> over ranges.   These scanners implement Java Iterable and
 can be used with foreach loops.  Scanners also support reading a subset of columns within a range.</p>
 
-<p>To specify a range, Fluo has a simple POJO called <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Span.html">Span</a>.  The name was chosen so it would not
-conflict with Accumulo’s Range. <a href="https://static.javadoc.io/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Span.html">Span</a> has multiple static helper methods for creating common
+<p>To specify a range, Fluo has a simple POJO called <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Span.html">Span</a>.  The name was chosen so it would not
+conflict with Accumulo’s Range. <a href="https://javadoc.io/page/org.apache.fluo/fluo-api/1.1.0-incubating/org/apache/fluo/api/data/Span.html">Span</a> has multiple static helper methods for creating common
 ranges, like a range over all rows with a given prefix.  Try the following exercise using scanners.</p>
 
 <ul>

-- 
To stop receiving notification emails like this one, please contact
['"commits@fluo.apache.org" <commits@fluo.apache.org>'].

Mime
View raw message