diff --git a/AUTHORS.rst b/AUTHORS.rst
index 424072d..ec0620c 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -1,31 +1,34 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. _authors:
 
-UserAle.pyqt5 is written and maintained by Draper and various contributors:
+Apache UserALE.PyQt5 is written and maintained by Draper and various contributors:
 
 Development Lead
 ````````````````
 
-- Michelle Beard <mbeard@draper.com>
+- Michelle Beard <msbeard@apache.org>
 
 Additional Staff
 ````````````````
 
-- Laura Mariano <lmariano@draper.com>
-- Dr. Joshua Poore <jpoore@draper.com>
-- Clay Gimenez <cgimenez@draper.com>
 - Hugh Enxing <henxing@draper.com>
+- Laura Mariano <lmariano@apache.org>
+- Dr. Joshua Poore <jpoore@apache.org>
+- Clay Gimenez <cgimenez@dapache.org>
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index a3ff1bb..1a81fc5 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,28 +1,33 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. _changelog:
 
 Changelog
 =========
 
-0.1.5 (2016-09-09) 
+0.1.5 (2016-09-19) 
 ------------------
 * clientTime field is represented in ISO 8601 format.
 * Sampling ``mouseenter``, ``mouseleave``, and ``dragmove`` events by ``resolution`` parameter.
+* Batch dumping all logs to file by interval parameter. 
 * Added Apache license headers.
+* Updated all documentation.
 * Updated versioning numbers.
 * Added docker support.
 
@@ -68,4 +73,4 @@
 0.1.0 (2016-06-24)
 ------------------
 
-Initial release.
\ No newline at end of file
+Initial release.
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 00ad167..c6b4683 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -1,65 +1,68 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+    <!--- Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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
 
-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. -->
+      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. 
+    --->
 
 .. _contributing:
 
-Contributing to UserAle.pyqt5
------------------------------
+Contributing to Apache UserALE.PyQt5
+------------------------------------
 
-Thank you for contributing to the UserAle project!
+Thank you for contributing to the Apache UserALE.PyQt5 project!
 
 There are certain procedures that must be followed for all contributions. These
 procedures are necessary to allow us to allocate resources for reviewing and
-testing your contribution, as well as communicate effectively with you during
+testing your contribution, as well as to communicate effectively with you during
 the review process.
 
-1) Create an issue in GitHub
+1) Create an issue in JIRA
 
-    All changes to UserAle must have corresponding issues in GitHub so the
+    All changes to Apache UserALE.PyQt5 must have a corresponding issue in JIRA so the
     change can be properly tracked:
 
-        https://github.com/draperlaboratory/userale.pyqt5/issues
+        https://issues.apache.org/jira/browse/senssoft
 
-    If you do not already have an account on GitHub, you will need to create
+    If you do not already have an account on JIRA, you will need to create
     before creating your new issue.
 
 2) Make and test your changes locally
 
-    The UserAle source is maintained in a git repository hosted on GitHub:
+    The Apache UserALE.PyQt5 source is maintained in a git repository hosted on Apache:
 
-        https://github.com/draperlaboratory/userale.pyqt5
+        https://git-wip-us.apache.org/repos/asf/incubator-senssoft-userale-pyqt5.git
 
     To make your changes, fork the repository and make commits
     to a topic branch in your fork. Commits should be made in logical units
-    and must reference the Git issue number:
+    and must reference the JIRA issue number:
 
     ::
     
-    	$ git commit -m "UserAle-123: High-level message describing the changes."
+    	$ git commit -m "#SENSSOFT-123: #High-level message describing the changes."
 
     Avoid commits which cover multiple, distinct goals that could (and should)
     be handled separately.
 
-    If you do not already have an account on GitHub, you will need to create
+    If you do not already have an account on JIRA, you will need to create
     one before making your changes.
 
-3) Submit your changes via a pull request on GitHub
+3) Submit your changes via a pull request on Git
 
     Once your changes are ready, submit them by creating a pull request for
     the corresponding topic branch you created when you began working on your
     changes.
 
-    The UserAle team will then review your changes and, if they pass review,
-    your changes will be merged.
+    The Apache UserALE.PyQt5 team will then review your changes and, if they pass review,
+    your changes will be merged.
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
index 60d0cac..cda7054 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,4 +1,4 @@
-Apache UserALE.pyqt5
+Apache UserALE.PyQt5
 Copyright 2016 The Apache Software Foundation
 
 This product includes software developed at
diff --git a/README.rst b/README.rst
index f4b2ed5..8c0a75a 100644
--- a/README.rst
+++ b/README.rst
@@ -1,23 +1,26 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  http://www.apache.org/licenses/LICENSE-2.0
 
-UserAle
-=======
+	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. 
+	--->
 
-UserAle.pyqt5 is one of the Software As A Sensor™ products. The goal of Software As A Sensor™ is to develop understanding 
+Apache UserALE
+==============
+
+Apache UserALE.PyQt5 is one of the Software As A Sensor™ products. The goal of Software As A Sensor™ is to develop understanding 
 of your users through their interactions with your software product. You can then apply that understanding to improve your 
-product's design and functionality. UserAle.pyqt5 provides an easy way to generate highly detailed log streams from any PyQt5 application.
+product's design and functionality. Apache UserALE.PyQt5 provides an easy way to generate highly detailed log streams from any PyQt5 application.
 
-UserAle.pyqt5 is developed at Draper and released free and open source through the Apache v2.0 license. Bug reports and contributions are welcome through GitHub.
+Apache UserALE.PyQt5 is developed at Draper and released free and open source through the Apache v2.0 license. Bug reports and contributions are welcome through Jira.
diff --git a/doc_requirements.txt b/doc_requirements.txt
new file mode 100644
index 0000000..88cfb57
--- /dev/null
+++ b/doc_requirements.txt
@@ -0,0 +1,2 @@
+Sphinx==1.4.6
+sphinx-rtd-theme==0.1.9
diff --git a/docs/Makefile b/docs/Makefile
index abf99bb..637bb97 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -71,7 +71,6 @@
 	rm -rf $(BUILDDIR)/html/*.js
 	rm -rf $(BUILDDIR)/html/*.html
 	rm -rf $(BUILDDIR)/html/_sources
-	rm -rf $(BUILDDIR)/html/_static
 
 .PHONY: html
 html:
diff --git a/docs/source/authors.rst b/docs/source/authors.rst
index a919b4e..d6ed7bd 100644
--- a/docs/source/authors.rst
+++ b/docs/source/authors.rst
@@ -1,17 +1,20 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 Authors
 -------
diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
index 77e020b..3b77ce5 100644
--- a/docs/source/changelog.rst
+++ b/docs/source/changelog.rst
@@ -1,16 +1,19 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. include:: ../../CHANGELOG.rst
diff --git a/docs/source/conf.py b/docs/source/conf.py
index b9e85d2..4cd8b2b 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License. 
 
-# UserAle documentation build configuration file, created by
+# Apache UserALE documentation build configuration file, created by
 # sphinx-quickstart on Fri Jun 24 16:58:43 2016.
 #
 # This file is execfile()d with the current directory set to its
@@ -25,21 +25,24 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-import sys
-import os
-
-from userale.version import __version__
+import sys, os
 
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
+# sys.path.insert(0, os.path.abspath('../../'))
+# sys.path.insert (0, '../..')
+# 
 sys.path.insert(0, os.path.abspath('../..'))
 
+from userale.version import __version__
+
 autoclass_content = 'both'
+
 # -- General configuration ------------------------------------------------
 
 # If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
+needs_sphinx = '1.4.1'
 
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
@@ -67,9 +70,9 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'UserAle'
-copyright = u'2016, The Charles Stark Draper Laboratory.'
-author = u'Michelle Beard <mbeard@draper.com>'
+project = u'Apache UserALE.PyQt5'
+copyright = u'2016, Apache Software License'
+author = u'Michelle Beard <msbeard@apache.dot.org>'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -224,7 +227,7 @@
 #html_search_scorer = 'scorer.js'
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'UserAledoc'
+htmlhelp_basename = 'ApacheUserALE.PyQt5.doc'
 
 # -- Options for LaTeX output ---------------------------------------------
 
@@ -246,8 +249,8 @@
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-    (master_doc, 'UserAle.tex', u'UserAle Documentation',
-     u'Michelle Beard \\textless{}mbeard@draper.com\\textgreater{}', 'manual'),
+    (master_doc, 'ApacheUserALE.PyQt5.tex', u'Apache UserALE.PyQt5 Documentation',
+     u'Michelle Beard \\textless{}msbeard@apache.dot.org\\textgreater{}', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -276,7 +279,7 @@
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    (master_doc, 'userale', u'UserAle Documentation',
+    (master_doc, 'ApacheUserAle.PyQt5', u'Apache UserALE.PyQt5 Documentation',
      [author], 1)
 ]
 
@@ -290,9 +293,9 @@
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-    (master_doc, 'UserAle', u'UserAle Documentation',
-     author, 'UserAle', 'One line description of project.',
-     'Miscellaneous'),
+    (master_doc, 'ApacheUserALE.PyQt5', u'Apache UserALE.PyQt5 Documentation',
+     author, 'ApacheUserAle.PyQt5', 'Apache UserALE.PyQt5 provides an easy way to generate highly detailed log streams from a PyQt5 application.',
+     'Instrumentation'),
 ]
 
 # Documents to append as an appendix to all manuals.
@@ -307,6 +310,5 @@
 # If true, do not generate a @detailmenu in the "Top" node's menu.
 #texinfo_no_detailmenu = False
 
-
 # Example configuration for intersphinx: refer to the Python standard library.
 intersphinx_mapping = {'https://docs.python.org/': None}
diff --git a/docs/source/contents.rst.inc b/docs/source/contents.rst.inc
index 57355ab..3893bc5 100644
--- a/docs/source/contents.rst.inc
+++ b/docs/source/contents.rst.inc
@@ -1,17 +1,20 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+   <!--- Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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
 
-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. -->
+     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. 
+   --->
 
 User's Guide
 ------------
@@ -25,7 +28,7 @@
 API Reference
 -------------
 
-This entire section is mainly for developers of UserAle. This section was automatically generated by `Sphinx <http://www.sphinx-doc.org/en/stable/>`_ and `apidoc <http://apidocjs.com/>`_. 
+This entire section is mainly for developers of Apache UserALE.PyQt5. This section was automatically generated by `Sphinx <http://www.sphinx-doc.org/en/stable/>`_ and `apidoc <http://apidocjs.com/>`_. 
 
 .. toctree::
    :maxdepth: 3
diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst
index 43e2269..f08e0b3 100644
--- a/docs/source/contributing.rst
+++ b/docs/source/contributing.rst
@@ -1,16 +1,19 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. include:: ../../CONTRIBUTING.rst
\ No newline at end of file
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 8ab9893..87dc6aa 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -1,17 +1,20 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. include:: ../../README.rst
 
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
index ce02451..e59a5a9 100644
--- a/docs/source/installation.rst
+++ b/docs/source/installation.rst
@@ -1,17 +1,20 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. _installation:
 
@@ -25,16 +28,16 @@
 * PyQt5, version 5.3 or above
 * pip3, see requirements.txt
 
-Installing UserAle
-------------------
+Installing Apache UserALE.PyQt5
+-------------------------------
 
-The first step is to install UserAle. First, checkout the latest version of UserAle from our Github repository.
+The first step is to install Apache UserALE.PyQt5. First, checkout the latest version of Apache UserALE.PyQt5 from our Git repository.
 
 ::
 
-	$ git clone https://github.com/draperlaboratory/userale.pyqt5.git
+	$ git clone https://git-wip-us.apache.org/repos/asf/incubator-senssoft-userale-pyqt5.git
 
-UserAle is a python3 project, so it can be installed like any other python library. Several operating systems (Mac OS X, Major Versions of Linux/BSD) have Python3 pre-installed, so you should just have to run
+Apache UserALE.PyQt5 is a python3 project, so it can be installed like any other python library. Several operating systems (Mac OS X, Major Versions of Linux/BSD) have Python3 pre-installed, so you should just have to run
 
 ::
 	
@@ -46,23 +49,23 @@
 
     $ pip3 install userale
 
-Users are strongly recommended to install UserAle in a virtualenv. Instructions to setup an virtual environment will be explained below.
+Users are strongly recommended to install Apache UserALE.PyQt5 in a virtualenv. Instructions to setup an virtual environment will be explained below.
 
 .. note ::
 
-	UserAle.pyqt5 requires that PyQt5 and the Qt5 bindings has been installed. Instructions to install PyQt5 and Qt5 in a virtual environment will be left to the user.
+	Apache UserALE.PyQt5 requires that PyQt5 and the Qt5 bindings has been installed. Instructions to install PyQt5 and Qt5 in a virtual environment will be left to the user.
 	
 .. note ::
 
 	When the package is installed via ``easy_install3`` or ``pip3`` this function will be bound to the ``userale`` executable in the Python installation's ``bin`` directory (on Windows - the ``Scripts`` directory).
 
-Installing UserAle in an Virtual Environment
---------------------------------------------
+Installing Apache UserALE.PyQt5 in an Virtual Environment
+---------------------------------------------------------
 
 There are multiple ways to create virtual environments for a Python3 application. virtualenv is a one of those tools to create isolated Python environments. virtualenv creates a folder which contains all the necessary executables to use the packages that the UserAle project would need. 
 
 
-Start by changing directory into the root of UserAle's project directory, and then use the virtualenv command-line tool to create a new environment:
+Start by changing directory into the root of Apache UserALE.PyQt5's project directory, and then use the virtualenv command-line tool to create a new environment:
 
 ::
 	
@@ -86,7 +89,7 @@
 
 ::
 
-	$ env/bin/pip3 -r requirements.txt
+	$ env/bin/pip3 install -r requirements.txt
 
 To build the source code and run all unit tests.
 
@@ -107,7 +110,13 @@
 
 However, if you want to manully build the documentation, the instructions are below.
 
-To build UserAle's documentation, create a directory at the root level of ``/userale.pyqt5`` called userale.pyqt5-docs.
+First, install the documentation dependencies:
+
+::
+
+	$ env/bin/pip3 install -r doc_requirements.txt
+
+To build Apache UserALE.PyQt5's documentation, create a directory at the root level of ``/userale.pyqt5`` called userale.pyqt5-docs.
 
 ::
 
diff --git a/docs/source/license.rst b/docs/source/license.rst
index d197d89..381ed53 100644
--- a/docs/source/license.rst
+++ b/docs/source/license.rst
@@ -1,17 +1,20 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 License
 =======
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst
index 31e9921..79d467d 100644
--- a/docs/source/quickstart.rst
+++ b/docs/source/quickstart.rst
@@ -1,29 +1,32 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. _quickstart:
 
 Quickstart Guide
 ================
 
-Instrumenting Your Application Globally with UserAle
-----------------------------------------------------
+Instrumenting Your Application Globally with Apache UserALE.PyQt5
+-----------------------------------------------------------------
 
-It's very simple to instrument a PyQt5 application with UserAle. Simply import the UserAle library and register it with your application. 
+It's very simple to instrument a PyQt5 application with Apache UserALE.PyQt5. Simply import the Apache UserALE.PyQt5 library and register it with your application. 
 
-Below is an example PyQt5 application taken from ZetCode PyQt5 tutorial instrumented with UserAle.
+Below is an example PyQt5 application taken from ZetCode PyQt5 tutorial instrumented with Apache UserALE.PyQt5.
 
 ::
 
@@ -53,7 +56,7 @@
 	if __name__ == '__main__':
 	    app = QApplication(sys.argv)    
 	    ex = TestApplication()
-	    # Initiate UserAle
+	    # Initiate Apache UserALE.PyQt5
 	    ale = Ale (output="mouse.log", user="testUser", toolversion="0.0.1")
 	    # install globally
 	    app.installEventFilter (ale)
@@ -61,7 +64,7 @@
 	    sys.exit (app.exec_())
 
 Before we enter the mainloop of the application, UserAle needs to register the application to be instrumented. 
-Simply instantiate UserAle and install it as an event filter in your application. 
+Simply instantiate Apache UserALE.PyQt5 and install it as an event filter in your application. 
 
 ::
 
@@ -71,9 +74,9 @@
 	app.installEventFilter (ale)
 
 
-Instrumenting Your Application Manually with UserAle
-----------------------------------------------------
+Instrumenting Your Application Manually with Apache UserALE.PyQt5
+-----------------------------------------------------------------
 
 .. todo::
 	
-	Write guidelines for instrumenting specific PyQt5 Widgets with UserAle.
\ No newline at end of file
+	Write guidelines for instrumenting specific PyQt5 Widgets with Apache UserALE.PyQt5.
\ No newline at end of file
diff --git a/docs/source/userale.rst b/docs/source/userale.rst
index ec83da4..f3f37df 100644
--- a/docs/source/userale.rst
+++ b/docs/source/userale.rst
@@ -1,27 +1,30 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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
+	<!--- Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You 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
 
-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. -->
+	  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. 
+	--->
 
 .. _api:
 
 
 ALE Library
 ===========
-UserALE intercepts all application events by letting the developer install an event filter in their PyQT5 application to generate detailed user logs. UserAle does not capture system level logs or events generated by a non-user (a.k.a. system and signals sent between QObjects).
+Apache UserALE.PyQt5 intercepts all application events by letting the developer install an event filter in their PyQt5 application to generate detailed user logs. Apache UserALE.PyQt5 does not capture system level logs or events generated by a non-user (a.k.a. system and signals sent between QObjects).
 
-UserAle
--------
+Apache UserALE.PyQt5
+--------------------
 
 .. automodule:: userale.ale
     :members:
diff --git a/setup.py b/setup.py
index ae7e75a..d54ed46 100644
--- a/setup.py
+++ b/setup.py
@@ -47,13 +47,13 @@
     raise RuntimeError ('No version info found.')
 
 setup (
-    name = 'UserAle',
+    name = 'Apache UserALE.PyQt5',
     version = get_version (),
     url = 'https://github.com/draperlaboratory/userale.pyqt5',
-    license = 'Apache Software License',
+    license = 'Apache Software License 2.0',
     author = 'Michelle Beard',
     author_email = 'mbeard@draper.com',
-    description = 'UserAle provides an easy way to generate highly detailed log streams from a PyQt5 application.',
+    description = 'Apache UserALE.PyQt5 provides an easy way to generate highly detailed log streams from a PyQt5 application.',
     long_description = __doc__,
     classifiers = [
       'Development Status :: 4 - Beta',
@@ -63,8 +63,7 @@
       'Environment :: Desktop Environment',
       'Intended Audience :: Developers',
       'License :: OSI Approved :: Apache Software License',
-      'Operating System :: OS Independent', 
-      'Private :: Do Not Upload"'
+      'Operating System :: OS Independent'
     ],
     keywords = 'logs users interactions', # Separate with spaces
     packages = find_packages (exclude=['examples', 'tests']),
diff --git a/userale/ale.py b/userale/ale.py
index 6ddf474..5f13e90 100644
--- a/userale/ale.py
+++ b/userale/ale.py
@@ -25,6 +25,9 @@
 _ = JsonFormatter
 
 class Ale (QObject):
+    """
+    ALE Library
+    """
 
     def __init__(self, 
                  output="userale.log",
@@ -139,7 +142,7 @@
         :param event: [QEvent] The event triggered by a user action.
         :return: [bool] Propagate filter up if other objects needs to be handled
         
-        Filters events for the watched widget (in this case, QApplication)
+        Filters events for the watched widget.
         '''
 
         data = None
@@ -173,6 +176,7 @@
         '''
         Clean up any dangling logs in self.logs or self.hlogs
         '''
+
         self.aggregate ()
         self.dump ()
 
@@ -183,9 +187,14 @@
 
         Routinely dump data to file or send over the network
         '''
+
         self.dump ()
 
     def dump (self):
+        '''
+        Write log data to file
+        '''
+
         if len(self.logs) > 0:
             # print ("dumping {} logs".format (len (self.logs)))
             self.logger.info (_(self.logs))
@@ -196,6 +205,7 @@
         Sample high frequency logs at self.resolution. High frequency logs are consolidated down to a single log event 
         to be emitted later
         '''
+        
         if len (self.hlogs) > 0:
             # print ("agging {} logs".format (len (self.hlogs)))
             agg_events = Counter (self.hlogs)
