diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b8acafe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+.project
+*.settings/
+.classpath
+/.idea/
+/logs
+*target/
+*.iml
+*.orig
+*~
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..a1f6d56
--- /dev/null
+++ b/CNAME
@@ -0,0 +1,2 @@
+htrace.org
+
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/images/bg_hr.png b/images/bg_hr.png
new file mode 100644
index 0000000..7973bd6
--- /dev/null
+++ b/images/bg_hr.png
Binary files differ
diff --git a/images/blacktocat.png b/images/blacktocat.png
new file mode 100644
index 0000000..6e264fe
--- /dev/null
+++ b/images/blacktocat.png
Binary files differ
diff --git a/images/icon_download.png b/images/icon_download.png
new file mode 100644
index 0000000..a2a287f
--- /dev/null
+++ b/images/icon_download.png
Binary files differ
diff --git a/images/sprite_download.png b/images/sprite_download.png
new file mode 100644
index 0000000..f2babd5
--- /dev/null
+++ b/images/sprite_download.png
Binary files differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..a0872af
--- /dev/null
+++ b/index.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html>
+<html>
+
+  <head>
+    <meta charset='utf-8' />
+    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
+    <meta name="description" content="Htrace : " />
+
+    <link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
+
+    <title>Htrace</title>
+  </head>
+
+  <body>
+
+    <!-- HEADER -->
+    <div id="header_wrap" class="outer">
+        <header class="inner">
+          <a id="forkme_banner" href="https://github.com/cloudera/htrace">View on GitHub</a>
+
+          <h1 id="project_title">Htrace</h1>
+          <h2 id="project_tagline"></h2>
+
+            <section id="downloads">
+              <a class="zip_download_link" href="https://github.com/cloudera/htrace/zipball/master">Download this project as a .zip file</a>
+              <a class="tar_download_link" href="https://github.com/cloudera/htrace/tarball/master">Download this project as a tar.gz file</a>
+            </section>
+        </header>
+    </div>
+
+    <!-- MAIN CONTENT -->
+    <div id="main_content_wrap" class="outer">
+      <section id="main_content" class="inner">
+        <h1>
+<a name="htrace" class="anchor" href="#htrace"><span class="octicon octicon-link"></span></a>HTrace</h1>
+
+<p>HTrace is a tracing framework intended for use with distributed systems written in java.  </p>
+
+<p>The project is hosted at <a href="http://github.com/cloudera/htrace">http://github.com/cloudera/htrace</a>.<br>
+The project is available in Maven Central with groupId: org.htrace, and name: htrace.<br>
+(It was formally at groupId: org.cloudera.htrace, and name: htrace).  </p>
+
+<h2>
+<a name="api" class="anchor" href="#api"><span class="octicon octicon-link"></span></a>API</h2>
+
+<p>Using HTrace requires some instrumentation to your application.<br>
+Before we get into that we have to review our terminology.  HTrace
+borrows <a href="http://research.google.com/pubs/pub36356.html">Dapper's</a>
+terminology.  </p>
+
+<p><b>Span:</b> The basic unit of work. For example, sending an RPC is a
+new span, as is sending a response to an RPC.<br>
+Span's are identified by a unique 64-bit ID for the span and another
+64-bit ID for the trace the span is a part of.  Spans also have other
+data, such as descriptions, key-value annotations, the ID of the span
+that caused them, and process ID's (normally IP address).<br><br>
+Spans are started and stopped, and they keep track of their timing
+information.  Once you create a span, you must stop it at some point
+in the future.  </p>
+
+<p><b>Trace:</b> A set of spans forming a tree-like structure.  For
+example, if you are running a distributed big-data store, a trace
+might be formed by a put request. </p>
+
+<p>To instrument your system you must:<br><br><b>1. Attach additional information to your RPC's.</b><br>
+In order to create the causal links necessary for a trace, HTrace
+needs to know about the causal
+relationships between spans.  The only information you need to add to
+your RPC's is two 64-bit longs.  If tracing is enabled (Trace.isTracing()
+returns true) when you send an RPC, attach the ID of the current span
+and the ID of the current trace to the message.<br>
+On the receiving end of the RPC, check to see if the message has the
+additional tracing information above.  If it does, start a new span
+with the information given (more on that in a bit).<br><br><b>2. Wrap your thread changes.</b><br>
+HTrace stores span information in java's ThreadLocals, which causes
+the trace to be "lost" on thread changes. The only way to prevent
+this is to "wrap" your thread changes. For example, if your code looks
+like this:</p>
+
+<div class="highlight highlight-java"><pre>    <span class="n">Thread</span> <span class="n">t1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Thread</span><span class="o">(</span><span class="k">new</span> <span class="n">MyRunnable</span><span class="o">());</span>
+    <span class="o">...</span>  
+</pre></div>
+
+<p>Just change it to look this:  </p>
+
+<div class="highlight highlight-java"><pre>    <span class="n">Thread</span> <span class="n">t1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Thread</span><span class="o">(</span><span class="n">Trace</span><span class="o">.</span><span class="na">wrap</span><span class="o">(</span><span class="k">new</span> <span class="n">MyRunnable</span><span class="o">()));</span>
+</pre></div>
+
+<p>That's it! <code>Trace.wrap()</code> takes a single argument (a runnable or a
+callable) and if the current thread is a part of a trace, returns a
+wrapped version of the argument.  The wrapped version of a callable
+and runnable just knows about the span that created it and will start
+a new span in the new thread that is the child of the span that
+created the runnable/callable.  There may be situations in which a
+simple <code>Trace.wrap()</code> does not suffice.  In these cases all you need
+to do is keep a reference to the "parent span" (the span before the
+thread change) and once you're in the new thread start a new span that
+is the "child" of the parent span you stored.<br><br>
+For example:<br><br>
+Say you have some object representing a "put" operation.  When the
+client does a "put," the put is first added to a list so another
+thread can batch together the puts. In this situation, you
+might want to add another field to the Put class that could store the
+current span at the time the put was created.  Then when the put is
+pulled out of the list to be processed, you can start a new span as
+the child of the span stored in the Put.<br><br><b>3. Add custom spans and annotations.</b><br>
+Once you've augmented your RPC's and wrapped the necessary thread
+changes, you can add more spans and annotations wherever you want.<br>
+For example, you might do some expensive computation that you want to
+see on your traces.  In this case, you could start a new span before
+the computation that you then stop after the computation has
+finished. It might look like this:  </p>
+
+<div class="highlight highlight-java"><pre>    <span class="n">Span</span> <span class="n">computationSpan</span> <span class="o">=</span> <span class="n">Trace</span><span class="o">.</span><span class="na">startSpan</span><span class="o">(</span><span class="s">"Expensive computation."</span><span class="o">);</span>  
+    <span class="k">try</span> <span class="o">{</span>  
+        <span class="c1">//expensive computation here  </span>
+    <span class="o">}</span> <span class="k">finally</span> <span class="o">{</span>  
+        <span class="n">computationSpan</span><span class="o">.</span><span class="na">stop</span><span class="o">();</span>  
+    <span class="o">}</span>  
+</pre></div>
+
+<p>HTrace also supports key-value annotations on a per-trace basis.<br><br>
+Example:</p>
+
+<div class="highlight highlight-java"><pre>    <span class="n">Trace</span><span class="o">.</span><span class="na">currentTrace</span><span class="o">().</span><span class="na">addAnnotation</span><span class="o">(</span><span class="s">"faultyRecordCounter"</span><span class="o">.</span><span class="na">getBytes</span><span class="o">(),</span> <span class="s">"1"</span><span class="o">.</span><span class="na">getBytes</span><span class="o">());</span>
+</pre></div>
+
+<p><code>Trace.currentTrace()</code> will not return <code>null</code> if the current thread is
+not tracing, but instead it will return a <code>NullSpan</code>, which does
+nothing on any of its method calls. The takeaway here is you can call
+methods on the <code>currentTrace()</code> without fear of NullPointerExceptions.</p>
+
+<h3>
+<a name="samplers" class="anchor" href="#samplers"><span class="octicon octicon-link"></span></a>Samplers</h3>
+
+<p><code>Sampler</code> is an interface that defines one function:  </p>
+
+<div class="highlight highlight-java"><pre>    <span class="kt">boolean</span> <span class="nf">next</span><span class="o">(</span><span class="n">T</span> <span class="n">info</span><span class="o">);</span>
+</pre></div>
+
+<p>All of the <code>Trace.startSpan()</code> methods can take an optional sampler.<br>
+A new span is only created if the sampler's next function returns
+true.  If the Sampler returns false, the <code>NullSpan</code> is returned from
+<code>startSpan()</code>, so it's safe to call <code>stop()</code> or <code>addAnnotation()</code> on it.
+As you may have noticed from the <code>next()</code> method signature, Sampler is
+parameterized.  The argument to <code>next()</code> is whatever piece of
+information you might need for sampling.  See <code>Sampler.java</code> for an
+example of this.  If you do not require any additional information,
+then just ignore the parameter.<br>
+HTrace includes  a sampler that always returns true, a
+sampler that always returns false and a sampler returns true some
+percentage of the time (you pass in the percentage as a decimal at construction). </p>
+
+<h3>
+<a name="tracestartspan" class="anchor" href="#tracestartspan"><span class="octicon octicon-link"></span></a><code>Trace.startSpan()</code>
+</h3>
+
+<p>There is a single method to create and start spans: <code>startSpan()</code>.<br>
+For the <code>startSpan()</code> methods that do not take an explicit Sampler, the
+default Sampler is used.  The default sampler returns true if and only
+if tracing is already on in the current thread.  That means that
+calling <code>startSpan()</code> with no explicit Sampler is a good idea when you
+have information that you would like to add to a trace if it's already
+occurring, but is not something you would want to start a whole new
+trace for.<br><br>
+If you are using a sampler that makes use of the <code>T info</code> parameter to
+<code>next()</code>, just pass in the object as the last argument.  If you leave it
+out, HTrace will pass <code>null</code> for you (so make sure your Samplers can
+handle <code>null</code>).<br><br>
+Aside from whether or not you pass in an explicit <code>Sampler</code>, there are
+other options you have when calling <code>startSpan()</code>.<br>
+For the next section I am assuming you are familiar with the options
+for passing in <code>Samplers</code> and <code>info</code> parameters, so when I say "no
+arguments," I mean no additional arguments other than whatever
+<code>Sampler</code>/<code>info</code> parameters you deem necessary.<br><br>
+You can call <code>startSpan()</code> with no additional arguments.
+In this case, <code>Trace.java</code> will start a span if the sampler (explicit
+or default) returns true. If the current span is not the <code>NullSpan</code>, the span
+returned will be a child of the current span, otherwise it will start
+a new trace in the current thread (it will be a
+<code>ProcessRootMilliSpan</code>). All of the other <code>startSpan()</code> methods take some
+parameter describing the parent span of the span to be created. The
+versions that take a <code>TraceInfo</code> or a <code>long traceId</code> and <code>long
+parentId</code> will mostly be used when continuing a trace over RPC. The
+receiver of the RPC will check the message for the additional two
+<code>longs</code> and will call <code>startSpan()</code> if they are attached.  The last
+<code>startSpan()</code> takes a <code>Span parent</code>.  The result of <code>parent.child()</code>
+will be used for the new span.  <code>Span.child()</code> simply returns a span
+that is a child of <code>this</code>. </p>
+
+<h2>
+<a name="testing-information" class="anchor" href="#testing-information"><span class="octicon octicon-link"></span></a>Testing Information</h2>
+
+<p>The test that creates a sample trace (TestHTrace) takes a command line argument telling it where to write span information. Run mvn test -DspanFile="FILE_PATH" to write span information to FILE_PATH. If no file is specified, span information will be written to standard out. If span information is written to a file, you can use the included graphDrawer python script in tools/ to create a simple visualization of the trace. Or you could write some javascript to make a better visualization, and send a pull request if you do :). </p>
+      </section>
+    </div>
+
+    <!-- FOOTER  -->
+    <div id="footer_wrap" class="outer">
+      <footer class="inner">
+        <p class="copyright">Htrace maintained by <a href="https://github.com/cloudera">cloudera</a></p>
+        <p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
+      </footer>
+    </div>
+
+    
+
+  </body>
+</html>
diff --git a/javascripts/main.js b/javascripts/main.js
new file mode 100644
index 0000000..d8135d3
--- /dev/null
+++ b/javascripts/main.js
@@ -0,0 +1 @@
+console.log('This would be the main JS file.');
diff --git a/params.json b/params.json
new file mode 100644
index 0000000..b9e7e72
--- /dev/null
+++ b/params.json
@@ -0,0 +1 @@
+{"name":"Htrace","tagline":"","body":"HTrace\r\n======\r\nHTrace is a tracing framework intended for use with distributed systems written in java.  \r\n\r\nThe project is hosted at http://github.com/cloudera/htrace.  \r\nThe project is available in Maven Central with groupId: org.htrace, and name: htrace.  \r\n(It was formally at groupId: org.cloudera.htrace, and name: htrace).  \r\n\r\nAPI\r\n---\r\nUsing HTrace requires some instrumentation to your application.  \r\nBefore we get into that we have to review our terminology.  HTrace\r\nborrows [Dapper's](http://research.google.com/pubs/pub36356.html)\r\nterminology.  \r\n  \r\n<b>Span:</b> The basic unit of work. For example, sending an RPC is a\r\nnew span, as is sending a response to an RPC.  \r\nSpan's are identified by a unique 64-bit ID for the span and another\r\n64-bit ID for the trace the span is a part of.  Spans also have other\r\ndata, such as descriptions, key-value annotations, the ID of the span\r\nthat caused them, and process ID's (normally IP address).  \r\n<br>\r\nSpans are started and stopped, and they keep track of their timing\r\ninformation.  Once you create a span, you must stop it at some point\r\nin the future.  \r\n  \r\n<b>Trace:</b> A set of spans forming a tree-like structure.  For\r\nexample, if you are running a distributed big-data store, a trace\r\nmight be formed by a put request. \r\n\r\nTo instrument your system you must:  \r\n<br>\r\n<b>1. Attach additional information to your RPC's.</b>  \r\nIn order to create the causal links necessary for a trace, HTrace\r\nneeds to know about the causal\r\nrelationships between spans.  The only information you need to add to\r\nyour RPC's is two 64-bit longs.  If tracing is enabled (Trace.isTracing()\r\nreturns true) when you send an RPC, attach the ID of the current span\r\nand the ID of the current trace to the message.  \r\nOn the receiving end of the RPC, check to see if the message has the\r\nadditional tracing information above.  If it does, start a new span\r\nwith the information given (more on that in a bit).  \r\n<br>\r\n<b>2. Wrap your thread changes.</b>  \r\nHTrace stores span information in java's ThreadLocals, which causes\r\nthe trace to be \"lost\" on thread changes. The only way to prevent\r\nthis is to \"wrap\" your thread changes. For example, if your code looks\r\nlike this:\r\n\r\n````java\r\n    Thread t1 = new Thread(new MyRunnable());\r\n    ...  \r\n````\r\n\r\nJust change it to look this:  \r\n\r\n````java\r\n    Thread t1 = new Thread(Trace.wrap(new MyRunnable()));\r\n````\r\n\r\nThat's it! `Trace.wrap()` takes a single argument (a runnable or a\r\ncallable) and if the current thread is a part of a trace, returns a\r\nwrapped version of the argument.  The wrapped version of a callable\r\nand runnable just knows about the span that created it and will start\r\na new span in the new thread that is the child of the span that\r\ncreated the runnable/callable.  There may be situations in which a\r\nsimple `Trace.wrap()` does not suffice.  In these cases all you need\r\nto do is keep a reference to the \"parent span\" (the span before the\r\nthread change) and once you're in the new thread start a new span that\r\nis the \"child\" of the parent span you stored.  \r\n<br>\r\nFor example:  \r\n<br>\r\nSay you have some object representing a \"put\" operation.  When the\r\nclient does a \"put,\" the put is first added to a list so another\r\nthread can batch together the puts. In this situation, you\r\nmight want to add another field to the Put class that could store the\r\ncurrent span at the time the put was created.  Then when the put is\r\npulled out of the list to be processed, you can start a new span as\r\nthe child of the span stored in the Put.  \r\n<br>\r\n<b>3. Add custom spans and annotations.</b>  \r\nOnce you've augmented your RPC's and wrapped the necessary thread\r\nchanges, you can add more spans and annotations wherever you want.  \r\nFor example, you might do some expensive computation that you want to\r\nsee on your traces.  In this case, you could start a new span before\r\nthe computation that you then stop after the computation has\r\nfinished. It might look like this:  \r\n\r\n````java\r\n    Span computationSpan = Trace.startSpan(\"Expensive computation.\");  \r\n    try {  \r\n        //expensive computation here  \r\n    } finally {  \r\n        computationSpan.stop();  \r\n    }  \r\n````\r\n\r\nHTrace also supports key-value annotations on a per-trace basis.  \r\n<br>\r\nExample:\r\n\r\n````java\r\n    Trace.currentTrace().addAnnotation(\"faultyRecordCounter\".getBytes(), \"1\".getBytes());\r\n````\r\n\r\n`Trace.currentTrace()` will not return `null` if the current thread is\r\nnot tracing, but instead it will return a `NullSpan`, which does\r\nnothing on any of its method calls. The takeaway here is you can call\r\nmethods on the `currentTrace()` without fear of NullPointerExceptions.\r\n\r\n###Samplers  \r\n`Sampler` is an interface that defines one function:  \r\n\r\n````java\r\n    boolean next(T info);\r\n````\r\n\r\nAll of the `Trace.startSpan()` methods can take an optional sampler.  \r\nA new span is only created if the sampler's next function returns\r\ntrue.  If the Sampler returns false, the `NullSpan` is returned from\r\n`startSpan()`, so it's safe to call `stop()` or `addAnnotation()` on it.\r\nAs you may have noticed from the `next()` method signature, Sampler is\r\nparameterized.  The argument to `next()` is whatever piece of\r\ninformation you might need for sampling.  See `Sampler.java` for an\r\nexample of this.  If you do not require any additional information,\r\nthen just ignore the parameter.  \r\nHTrace includes  a sampler that always returns true, a\r\nsampler that always returns false and a sampler returns true some\r\npercentage of the time (you pass in the percentage as a decimal at construction). \r\n\r\n###`Trace.startSpan()` \r\nThere is a single method to create and start spans: `startSpan()`.  \r\nFor the `startSpan()` methods that do not take an explicit Sampler, the\r\ndefault Sampler is used.  The default sampler returns true if and only\r\nif tracing is already on in the current thread.  That means that\r\ncalling `startSpan()` with no explicit Sampler is a good idea when you\r\nhave information that you would like to add to a trace if it's already\r\noccurring, but is not something you would want to start a whole new\r\ntrace for.  \r\n<br>\r\nIf you are using a sampler that makes use of the `T info` parameter to\r\n`next()`, just pass in the object as the last argument.  If you leave it\r\nout, HTrace will pass `null` for you (so make sure your Samplers can\r\nhandle `null`).  \r\n<br>\r\nAside from whether or not you pass in an explicit `Sampler`, there are\r\nother options you have when calling `startSpan()`.  \r\nFor the next section I am assuming you are familiar with the options\r\nfor passing in `Samplers` and `info` parameters, so when I say \"no\r\narguments,\" I mean no additional arguments other than whatever\r\n`Sampler`/`info` parameters you deem necessary.  \r\n<br>\r\nYou can call `startSpan()` with no additional arguments.\r\nIn this case, `Trace.java` will start a span if the sampler (explicit\r\nor default) returns true. If the current span is not the `NullSpan`, the span\r\nreturned will be a child of the current span, otherwise it will start\r\na new trace in the current thread (it will be a\r\n`ProcessRootMilliSpan`). All of the other `startSpan()` methods take some\r\nparameter describing the parent span of the span to be created. The\r\nversions that take a `TraceInfo` or a `long traceId` and `long\r\nparentId` will mostly be used when continuing a trace over RPC. The\r\nreceiver of the RPC will check the message for the additional two\r\n`longs` and will call `startSpan()` if they are attached.  The last\r\n`startSpan()` takes a `Span parent`.  The result of `parent.child()`\r\nwill be used for the new span.  `Span.child()` simply returns a span\r\nthat is a child of `this`. \r\n\r\nTesting Information\r\n-------------------------------\r\n\r\nThe test that creates a sample trace (TestHTrace) takes a command line argument telling it where to write span information. Run mvn test -DspanFile=\"FILE\\_PATH\" to write span information to FILE_PATH. If no file is specified, span information will be written to standard out. If span information is written to a file, you can use the included graphDrawer python script in tools/ to create a simple visualization of the trace. Or you could write some javascript to make a better visualization, and send a pull request if you do :). \r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css
new file mode 100644
index 0000000..e65cedf
--- /dev/null
+++ b/stylesheets/pygment_trac.css
@@ -0,0 +1,70 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #f0f3f3; }
+.highlight .c { color: #0099FF; font-style: italic } /* Comment */
+.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #006699; font-weight: bold } /* Keyword */
+.highlight .o { color: #555555 } /* Operator */
+.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #009999 } /* Comment.Preproc */
+.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.highlight .go { color: #AAAAAA } /* Generic.Output */
+.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #99CC66 } /* Generic.Traceback */
+.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #006699 } /* Keyword.Pseudo */
+.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #FF6600 } /* Literal.Number */
+.highlight .s { color: #CC3300 } /* Literal.String */
+.highlight .na { color: #330099 } /* Name.Attribute */
+.highlight .nb { color: #336666 } /* Name.Builtin */
+.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+.highlight .no { color: #336600 } /* Name.Constant */
+.highlight .nd { color: #9999FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #CC00FF } /* Name.Function */
+.highlight .nl { color: #9999FF } /* Name.Label */
+.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #003333 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
+.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
+.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
+.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
+.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
+.highlight .sc { color: #CC3300 } /* Literal.String.Char */
+.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
+.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
+.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
+.highlight .sx { color: #CC3300 } /* Literal.String.Other */
+.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
+.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
+.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
+.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #003333 } /* Name.Variable.Class */
+.highlight .vg { color: #003333 } /* Name.Variable.Global */
+.highlight .vi { color: #003333 } /* Name.Variable.Instance */
+.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css
new file mode 100644
index 0000000..7a08b01
--- /dev/null
+++ b/stylesheets/stylesheet.css
@@ -0,0 +1,423 @@
+/*******************************************************************************
+Slate Theme for GitHub Pages
+by Jason Costello, @jsncostello
+*******************************************************************************/
+
+@import url(pygment_trac.css);
+
+/*******************************************************************************
+MeyerWeb Reset
+*******************************************************************************/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font: inherit;
+  vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+  display: block;
+}
+
+ol, ul {
+  list-style: none;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+/*******************************************************************************
+Theme Styles
+*******************************************************************************/
+
+body {
+  box-sizing: border-box;
+  color:#373737;
+  background: #212121;
+  font-size: 16px;
+  font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
+  line-height: 1.5;
+  -webkit-font-smoothing: antialiased;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  margin: 10px 0;
+  font-weight: 700;
+  color:#222222;
+  font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
+  letter-spacing: -1px;
+}
+
+h1 {
+  font-size: 36px;
+  font-weight: 700;
+}
+
+h2 {
+  padding-bottom: 10px;
+  font-size: 32px;
+  background: url('../images/bg_hr.png') repeat-x bottom;
+}
+
+h3 {
+  font-size: 24px;
+}
+
+h4 {
+  font-size: 21px;
+}
+
+h5 {
+  font-size: 18px;
+}
+
+h6 {
+  font-size: 16px;
+}
+
+p {
+  margin: 10px 0 15px 0;
+}
+
+footer p {
+  color: #f2f2f2;
+}
+
+a {
+  text-decoration: none;
+  color: #007edf;
+  text-shadow: none;
+
+  transition: color 0.5s ease;
+  transition: text-shadow 0.5s ease;
+  -webkit-transition: color 0.5s ease;
+  -webkit-transition: text-shadow 0.5s ease;
+  -moz-transition: color 0.5s ease;
+  -moz-transition: text-shadow 0.5s ease;
+  -o-transition: color 0.5s ease;
+  -o-transition: text-shadow 0.5s ease;
+  -ms-transition: color 0.5s ease;
+  -ms-transition: text-shadow 0.5s ease;
+}
+
+a:hover, a:focus {text-decoration: underline;}
+
+footer a {
+  color: #F2F2F2;
+  text-decoration: underline;
+}
+
+em {
+  font-style: italic;
+}
+
+strong {
+  font-weight: bold;
+}
+
+img {
+  position: relative;
+  margin: 0 auto;
+  max-width: 739px;
+  padding: 5px;
+  margin: 10px 0 10px 0;
+  border: 1px solid #ebebeb;
+
+  box-shadow: 0 0 5px #ebebeb;
+  -webkit-box-shadow: 0 0 5px #ebebeb;
+  -moz-box-shadow: 0 0 5px #ebebeb;
+  -o-box-shadow: 0 0 5px #ebebeb;
+  -ms-box-shadow: 0 0 5px #ebebeb;
+}
+
+p img {
+  display: inline;
+  margin: 0;
+  padding: 0;
+  vertical-align: middle;
+  text-align: center;
+  border: none;
+}
+
+pre, code {
+  width: 100%;
+  color: #222;
+  background-color: #fff;
+
+  font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+  font-size: 14px;
+
+  border-radius: 2px;
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+}
+
+pre {
+  width: 100%;
+  padding: 10px;
+  box-shadow: 0 0 10px rgba(0,0,0,.1);
+  overflow: auto;
+}
+
+code {
+  padding: 3px;
+  margin: 0 3px;
+  box-shadow: 0 0 10px rgba(0,0,0,.1);
+}
+
+pre code {
+  display: block;
+  box-shadow: none;
+}
+
+blockquote {
+  color: #666;
+  margin-bottom: 20px;
+  padding: 0 0 0 20px;
+  border-left: 3px solid #bbb;
+}
+
+
+ul, ol, dl {
+  margin-bottom: 15px
+}
+
+ul {
+  list-style: inside;
+  padding-left: 20px;
+}
+
+ol {
+  list-style: decimal inside;
+  padding-left: 20px;
+}
+
+dl dt {
+  font-weight: bold;
+}
+
+dl dd {
+  padding-left: 20px;
+  font-style: italic;
+}
+
+dl p {
+  padding-left: 20px;
+  font-style: italic;
+}
+
+hr {
+  height: 1px;
+  margin-bottom: 5px;
+  border: none;
+  background: url('../images/bg_hr.png') repeat-x center;
+}
+
+table {
+  border: 1px solid #373737;
+  margin-bottom: 20px;
+  text-align: left;
+ }
+
+th {
+  font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  padding: 10px;
+  background: #373737;
+  color: #fff;
+ }
+
+td {
+  padding: 10px;
+  border: 1px solid #373737;
+ }
+
+form {
+  background: #f2f2f2;
+  padding: 20px;
+}
+
+/*******************************************************************************
+Full-Width Styles
+*******************************************************************************/
+
+.outer {
+  width: 100%;
+}
+
+.inner {
+  position: relative;
+  max-width: 640px;
+  padding: 20px 10px;
+  margin: 0 auto;
+}
+
+#forkme_banner {
+  display: block;
+  position: absolute;
+  top:0;
+  right: 10px;
+  z-index: 10;
+  padding: 10px 50px 10px 10px;
+  color: #fff;
+  background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
+  font-weight: 700;
+  box-shadow: 0 0 10px rgba(0,0,0,.5);
+  border-bottom-left-radius: 2px;
+  border-bottom-right-radius: 2px;
+}
+
+#header_wrap {
+  background: #212121;
+  background: -moz-linear-gradient(top, #373737, #212121);
+  background: -webkit-linear-gradient(top, #373737, #212121);
+  background: -ms-linear-gradient(top, #373737, #212121);
+  background: -o-linear-gradient(top, #373737, #212121);
+  background: linear-gradient(top, #373737, #212121);
+}
+
+#header_wrap .inner {
+  padding: 50px 10px 30px 10px;
+}
+
+#project_title {
+  margin: 0;
+  color: #fff;
+  font-size: 42px;
+  font-weight: 700;
+  text-shadow: #111 0px 0px 10px;
+}
+
+#project_tagline {
+  color: #fff;
+  font-size: 24px;
+  font-weight: 300;
+  background: none;
+  text-shadow: #111 0px 0px 10px;
+}
+
+#downloads {
+  position: absolute;
+  width: 210px;
+  z-index: 10;
+  bottom: -40px;
+  right: 0;
+  height: 70px;
+  background: url('../images/icon_download.png') no-repeat 0% 90%;
+}
+
+.zip_download_link {
+  display: block;
+  float: right;
+  width: 90px;
+  height:70px;
+  text-indent: -5000px;
+  overflow: hidden;
+  background: url(../images/sprite_download.png) no-repeat bottom left;
+}
+
+.tar_download_link {
+  display: block;
+  float: right;
+  width: 90px;
+  height:70px;
+  text-indent: -5000px;
+  overflow: hidden;
+  background: url(../images/sprite_download.png) no-repeat bottom right;
+  margin-left: 10px;
+}
+
+.zip_download_link:hover {
+  background: url(../images/sprite_download.png) no-repeat top left;
+}
+
+.tar_download_link:hover {
+  background: url(../images/sprite_download.png) no-repeat top right;
+}
+
+#main_content_wrap {
+  background: #f2f2f2;
+  border-top: 1px solid #111;
+  border-bottom: 1px solid #111;
+}
+
+#main_content {
+  padding-top: 40px;
+}
+
+#footer_wrap {
+  background: #212121;
+}
+
+
+
+/*******************************************************************************
+Small Device Styles
+*******************************************************************************/
+
+@media screen and (max-width: 480px) {
+  body {
+    font-size:14px;
+  }
+
+  #downloads {
+    display: none;
+  }
+
+  .inner {
+    min-width: 320px;
+    max-width: 480px;
+  }
+
+  #project_title {
+  font-size: 32px;
+  }
+
+  h1 {
+    font-size: 28px;
+  }
+
+  h2 {
+    font-size: 24px;
+  }
+
+  h3 {
+    font-size: 21px;
+  }
+
+  h4 {
+    font-size: 18px;
+  }
+
+  h5 {
+    font-size: 14px;
+  }
+
+  h6 {
+    font-size: 12px;
+  }
+
+  code, pre {
+    min-width: 320px;
+    max-width: 480px;
+    font-size: 11px;
+  }
+
+}
