Updated documentation. Included brief instrumentation guide.
diff --git a/.travis.yaml b/.travis.yaml
index 76722fe..2d06779 100644
--- a/.travis.yaml
+++ b/.travis.yaml
@@ -1,7 +1,7 @@
 language: python
 python:
-  - "3.0"
+  - "3.5"
 install:
-  - "pip install -r requirements.txt"
+  - "pip3 install -r requirements.txt"
 script:
-  - python setup.py develop test
+  - python3 setup.py develop test
diff --git a/AUTHORS.txt b/AUTHORS
similarity index 90%
rename from AUTHORS.txt
rename to AUTHORS
index 0386801..4d69944 100644
--- a/AUTHORS.txt
+++ b/AUTHORS
@@ -1,8 +1,8 @@
 UserAle.pyqt5 is written and maintained by Michelle Beard and 
 various contributors:
 
-Development Leads
-`````````````````
+Development Lead
+````````````````
 
 - Michelle Beard <mbeard@draper.com>
 
diff --git a/CHANGELOG.txt b/CHANGELOG
similarity index 100%
rename from CHANGELOG.txt
rename to CHANGELOG
diff --git a/LICENSE.txt b/LICENSE
similarity index 100%
rename from LICENSE.txt
rename to LICENSE
diff --git a/MANIFEST.in b/MANIFEST.in
index 6334d32..05ae03a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,5 +1,6 @@
 include MANIFEST.in
 include setup.py
-include README.txt 
-include CHANGELOG.txt 
-include LICENSE.txt
\ No newline at end of file
+include README
+include AUTHORS
+include CHANGELOG
+include LICENSE
\ No newline at end of file
diff --git a/README b/README
new file mode 100644
index 0000000..50e45fd
--- /dev/null
+++ b/README
@@ -0,0 +1,8 @@
+UserAle
+=======
+
+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 funtionality. UserAle.pyqt5 provides an easy way to generate highly detailed log streams from an 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.
diff --git a/README.txt b/README.txt
deleted file mode 100644
index a39bcfd..0000000
--- a/README.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-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 funtionality. UserAle.pyqt5 provides an easy way to generate highly detailed log streams from an 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.
-
-License
-=======
-
-Copyright 2016 The Charles Stark Draper Laboratory, Inc.
-
-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.
\ No newline at end of file
diff --git a/docs/source/authors.rst b/docs/source/authors.rst
index 201880a..e8106a9 100644
--- a/docs/source/authors.rst
+++ b/docs/source/authors.rst
@@ -1,4 +1,4 @@
 Authors
 -------
 
-.. include:: ../../AUTHORS.txt
\ No newline at end of file
+.. include:: ../../AUTHORS
\ No newline at end of file
diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
index 609466b..0143bc5 100644
--- a/docs/source/changelog.rst
+++ b/docs/source/changelog.rst
@@ -3,4 +3,4 @@
 
 Here you can see the full list of changes between each UserAle.pyqt5 release.
 
-.. include:: ../../CHANGELOG.txt
+.. include:: ../../CHANGELOG
diff --git a/docs/source/conf.py b/docs/source/conf.py
index b38e0ff..76ee93d 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -52,8 +52,8 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'Apache UserAle'
-copyright = u'2016, The Charles Stark Draper Laboratory Licensed under Apache Software License.'
+project = u'UserAle'
+copyright = u'2016, The Charles Stark Draper Laboratory.'
 author = u'Michelle Beard <mbeard@draper.com>'
 
 # The version info for the project you're documenting, acts as replacement for
@@ -168,16 +168,16 @@
 #html_additional_pages = {}
 
 # If false, no module index is generated.
-#html_domain_indices = True
+html_domain_indices = False
 
 # If false, no index is generated.
-#html_use_index = True
+html_use_index = False
 
 # If true, the index is split into individual pages for each letter.
 #html_split_index = False
 
 # If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
+html_show_sourcelink = False
 
 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
 #html_show_sphinx = True
diff --git a/docs/source/contents.rst.inc b/docs/source/contents.rst.inc
index 6fad61b..59fa596 100644
--- a/docs/source/contents.rst.inc
+++ b/docs/source/contents.rst.inc
@@ -10,7 +10,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 UserAle. 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/index.rst b/docs/source/index.rst
index c81cbe2..ec1ac6d 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -1,14 +1,5 @@
 :orphan:
 
-Apache UserAle's documentation!
-===============================
+.. include:: ../../README
 
 .. include:: contents.rst.inc
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
index 3fea99d..e3ca3fb 100644
--- a/docs/source/installation.rst
+++ b/docs/source/installation.rst
@@ -2,3 +2,113 @@
 
 Installation Guide
 ==================
+
+Requirements
+------------
+
+* Python 3.5 or above
+* PyQt5, version 5.3 or above
+* pip3, see requirements.txt
+
+Installing UserAle
+------------------
+
+The first step is to install UserAle. First, checkout the latest version of UserAle from our Github repository.
+
+::
+
+	$ git clone https://github.com/draperlaboratory/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
+
+::
+	
+    $ easy_install3 userale
+
+or
+
+::
+
+    $ pip3 install userale
+
+Users are strongly recommended to install UserAle 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.
+	
+.. 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
+--------------------------------------------
+
+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:
+
+::
+	
+	$ virtualenv --python=/usr/bin/python3 env
+
+
+Optionally, Python3 has built in support for virtual environments. 
+
+::
+
+	$ mkdir env 
+	$ python3 -m venv env
+
+Activate environment:
+
+::
+
+	$ source env/bin/activate
+
+Install UserAle requirements:
+
+::
+
+	$ env/bin/pip3 -r requirements.txt
+
+To build the source code and run all unit tests.
+
+::
+
+    $ env/bin/python3 setup.py develop test
+
+Deactivate environment
+
+:: 	
+
+	$ deactivate
+
+Installing Documentation 
+------------------------
+
+To save yourself the trouble, all up to date documentation is available at https://draperlaboratory.github.io/userale.pyqt5/.
+
+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.
+
+::
+
+	$ mkdir userale.pyqt5-docs & cd userale.pyqt5/docs
+
+Execute build command:
+
+::
+
+	# Inside top-level docs/ directory.
+ 	$ make html
+
+This should build the documentation in your shell, and output HTML. At then end, it should say something about documents being ready in ``userale.pyqt5-docs/html``. 
+
+You can now open them in your browser by typing
+
+::
+
+	$ open userale.pyqt5-docs/html/index.html
\ No newline at end of file
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst
index 650d040..ba1b7d2 100644
--- a/docs/source/quickstart.rst
+++ b/docs/source/quickstart.rst
@@ -1,4 +1,58 @@
 .. _quickstart:
 
 Quickstart Guide
-================
\ No newline at end of file
+================
+
+Instrumenting Your Application with UserAle
+-------------------------------------------
+
+It's very simple to instrument a PyQ5 application with UserAle. Simply import the UserAle library and register it with your application. 
+
+Below is an example PyQt5 application taken from ZetCode PyQt5 tutorial instrumented with UserAle
+
+::
+
+	import sys
+	from PyQt5.QtWidgets import QWidget, QLabel, QPushButton, QApplication, QMessageBox
+	from PyQt5.QtCore import QCoreApplication, QObject, QEvent
+
+	from userale.ale import Ale
+
+	class TestApplication (QWidget):
+	    
+	    def __init__(self):
+	        super().__init__()
+	        self.initUI()
+	        
+	    def initUI(self):               
+	        qbtn = QPushButton('Quit', self)
+	        qbtn.setObjectName ("testApplicationButton")
+	        qbtn.clicked.connect(QCoreApplication.instance().quit)
+	        qbtn.resize(qbtn.sizeHint())
+	        qbtn.move(50, 50)       
+	         
+	        self.setGeometry(300, 300, 250, 150)
+	        self.setWindowTitle('Quit button')    
+	        self.show()
+	        
+	if __name__ == '__main__':
+	    app = QApplication(sys.argv)    
+	    ex = TestApplication()
+	    # Initiate UserAle
+	    ale = Ale ()
+	    # install globally
+	    app.installEventFilter (ale)
+
+	    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. 
+
+::
+
+	# Initiate UserAle
+	ale = Ale ()
+	# install globally
+	app.installEventFilter (ale)