diff --git a/src/cmislib/atompub/__init__.py b/src/cmislib/atompub/__init__.py
index 6e30c70..cf0a677 100644
--- a/src/cmislib/atompub/__init__.py
+++ b/src/cmislib/atompub/__init__.py
@@ -1 +1,21 @@
-__author__ = 'jpotts'
+#
+#      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
+#
+#      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.
+#
+from cmislib.atompub.binding import AtomPubBinding, RepositoryService
+
+__all__ = ["AtomPubBinding", "RepositoryService"]
diff --git a/src/cmislib/browser/__init__.py b/src/cmislib/browser/__init__.py
index 6e30c70..da03f15 100644
--- a/src/cmislib/browser/__init__.py
+++ b/src/cmislib/browser/__init__.py
@@ -1 +1,21 @@
-__author__ = 'jpotts'
+#
+#      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
+#
+#      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.
+#
+from cmislib.browser.binding import BrowserBinding, RepositoryService
+
+__all__ = ["BrowserBinding", "RepositoryService"]
diff --git a/src/cmislib/cmis_services.py b/src/cmislib/cmis_services.py
index 4659d02..28d78d4 100644
--- a/src/cmislib/cmis_services.py
+++ b/src/cmislib/cmis_services.py
@@ -19,7 +19,7 @@
 #
 
 """
-Module containing the base Binding class and other service objects.
+This module contains the base Binding class and other service objects.
 """
 from cmislib.exceptions import CmisException, RuntimeException, \
     ObjectNotFoundException, InvalidArgumentException, \
diff --git a/src/cmislib/domain.py b/src/cmislib/domain.py
index 6287a94..b9a73bc 100644
--- a/src/cmislib/domain.py
+++ b/src/cmislib/domain.py
@@ -18,7 +18,7 @@
 #      under the License.
 #
 """
-Module containing the domain objects used to work with a CMIS provider.
+This module contains the domain objects used to work with a CMIS provider.
 """
 import logging
 
@@ -161,7 +161,7 @@
         u'someFolder2'
         >>> props = {'cmis:name': 'someFolderFoo'}
         >>> folder.updateProperties(props)
-        <cmislib.model.Folder object at 0x103ab1210>
+        <cmislib.atompub.binding.AtomPubFolder object at 0x103ab1210>
         >>> folder.getName()
         u'someFolderFoo'
 
@@ -269,7 +269,7 @@
 
         >>> acl = folder.getACL()
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x10071a8d0>, 'jdoe': <cmislib.model.ACE object at 0x10071a590>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x10071a8d0>, 'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x10071a590>}
 
         The optional onlyBasicPermissions argument is currently not supported.
         """
@@ -286,7 +286,7 @@
         >>> acl = folder.getACL()
         >>> acl.addEntry(ACE('jdoe', 'cmis:write', 'true'))
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x10071a8d0>, 'jdoe': <cmislib.model.ACE object at 0x10071a590>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x10071a8d0>, 'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x10071a590>}
         """
 
         pass
@@ -853,7 +853,7 @@
         with a StringIO and then calls createDocument.
 
         >>> repo.createDocumentFromString('testdoc5', parentFolder=testFolder, contentString='Hello, World!', contentType='text/plain')
-        <cmislib.model.Document object at 0x101352ed0>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x101352ed0>
         """
 
         pass
@@ -878,7 +878,7 @@
 
         >>> f = open('sample-a.pdf', 'rb')
         >>> doc = folder.createDocument('sample-a.pdf', contentFile=f)
-        <cmislib.model.Document object at 0x105be5e10>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x105be5e10>
         >>> f.close()
         >>> doc.getTitle()
         u'sample-a.pdf'
@@ -1037,7 +1037,7 @@
         >>> for result in resultSet.getResults():
         ...     result
         ...
-        <cmislib.model.Document object at 0x104851810>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x104851810>
         """
 
         pass
@@ -1064,7 +1064,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1081,7 +1081,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1097,7 +1097,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1115,7 +1115,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1217,7 +1217,7 @@
         >>> doc.isCheckedOut()
         False
         >>> doc.checkout()
-        <cmislib.model.Document object at 0x103a25ad0>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x103a25ad0>
         >>> pwc = doc.getPrivateWorkingCopy()
         >>> pwc.getTitle()
         u'sample-b (Working Copy).pdf'
@@ -1263,7 +1263,7 @@
         >>> doc.isCheckedOut()
         True
         >>> pwc.checkin()
-        <cmislib.model.Document object at 0x103a8ae90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x103a8ae90>
         >>> doc.isCheckedOut()
         False
 
@@ -1461,7 +1461,7 @@
 
         >>> f = open('250px-Cmis_logo.png', 'rb')
         >>> subFolder.createDocument('logo.png', contentFile=f)
-        <cmislib.model.Document object at 0x10410fa10>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10410fa10>
         >>> f.close()
 
         If you wanted to set one or more properties when creating the doc, pass
@@ -1470,7 +1470,7 @@
         >>> props = {'cmis:someProp':'someVal'}
         >>> f = open('250px-Cmis_logo.png', 'rb')
         >>> subFolder.createDocument('logo.png', props, contentFile=f)
-        <cmislib.model.Document object at 0x10410fa10>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10410fa10>
         >>> f.close()
 
         To specify a custom object type, pass in a property called
@@ -1926,7 +1926,7 @@
         >>> acl.addEntry('jpotts', 'cmis:read', 'true')
         >>> acl.addEntry('jsmith', 'cmis:write', 'true')
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x100731410>, u'jdoe': <cmislib.model.ACE object at 0x100731150>, 'jpotts': <cmislib.model.ACE object at 0x1005a22d0>, 'jsmith': <cmislib.model.ACE object at 0x1005a2210>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x1005a2210>}
         """
 
         pass
@@ -1937,10 +1937,10 @@
         Removes the :class:`ACE` entry given a specific principalId.
 
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x100731410>, u'jdoe': <cmislib.model.ACE object at 0x100731150>, 'jpotts': <cmislib.model.ACE object at 0x1005a22d0>, 'jsmith': <cmislib.model.ACE object at 0x1005a2210>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x1005a2210>}
         >>> acl.removeEntry('jsmith')
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x100731410>, u'jdoe': <cmislib.model.ACE object at 0x100731150>, 'jpotts': <cmislib.model.ACE object at 0x1005a22d0>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>}
         """
 
         pass
@@ -1955,7 +1955,7 @@
         >>> acl.addEntry(ACE('jsmith', 'cmis:write', 'true'))
         >>> acl.addEntry(ACE('jpotts', 'cmis:write', 'true'))
         >>> acl.entries
-        {'jpotts': <cmislib.model.ACE object at 0x1012c7310>, 'jsmith': <cmislib.model.ACE object at 0x100528490>}
+        {'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1012c7310>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x100528490>}
         >>> acl.getXmlDoc()
         <xml.dom.minidom.Document instance at 0x1012cbb90>
         >>> acl.clearEntries()
diff --git a/src/cmislib/exceptions.py b/src/cmislib/exceptions.py
index 58d601d..9bbe630 100644
--- a/src/cmislib/exceptions.py
+++ b/src/cmislib/exceptions.py
@@ -19,7 +19,7 @@
 #
 
 """
-Module containing exceptions.
+This module contains exceptions used throughout the API.
 """
 class CmisException(Exception):
 
diff --git a/src/cmislib/messages.py b/src/cmislib/messages.py
index 0d49756..67be0ec 100644
--- a/src/cmislib/messages.py
+++ b/src/cmislib/messages.py
@@ -19,7 +19,7 @@
 #
 
 """
-Common strings.
+This module contains common strings.
 """
 NO_ACL_SUPPORT = 'This repository does not support ACLs'
 NO_CHANGE_LOG_SUPPORT = 'This repository does not support change logs'
diff --git a/src/cmislib/model.py b/src/cmislib/model.py
index 03ede82..8333122 100644
--- a/src/cmislib/model.py
+++ b/src/cmislib/model.py
@@ -18,7 +18,7 @@
 #      under the License.
 #
 """
-Module containing the CmisClient object, which is responsible for
+The model module contains the CmisClient object, which is responsible for
 keeping track of connection information. The name 'model' is no longer
 really appropriate, but it is kept for backwards compatibility.
 """
diff --git a/src/cmislib/util.py b/src/cmislib/util.py
index 00b9c70..85a40dd 100644
--- a/src/cmislib/util.py
+++ b/src/cmislib/util.py
@@ -18,7 +18,7 @@
 #      under the License.
 #
 """
-Module containing handy utility functions.
+This module contains handy utility functions.
 """
 import re
 import iso8601
diff --git a/src/doc/src/about.rst b/src/doc/src/about.rst
index 00697ad..1adf74b 100644
--- a/src/doc/src/about.rst
+++ b/src/doc/src/about.rst
@@ -22,37 +22,18 @@
 
 The library is being developed with the following guidelines:
  * Developers using this API should be able to work with CMIS domain objects without having to worry about the underlying implementation details.
- * The library will use the Resftul AtomPub Binding.
- * The library will conform to the `CMIS spec <http://docs.oasisopen.org/cmis/CMIS/v1.0/cd06/cmis-spec-v1.0.pdf>`_ as closely as possible. Several public CMIS repositories are being used to test the API. 
+ * The library will use the Resftul AtomPub Binding and the Browser Binding (added with CMIS 1.1).
+ * The library will conform to the `CMIS spec <http://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.html>`_ as closely as possible. Several public CMIS repositories are being used to test the API.
  * The library should have no hard-coded URL's. It should be able to get everything it needs regarding how to work with the CMIS service from the CMIS service URL response and subsequent calls.
  * There shouldn't have to be a vendor-specific version of this library. The goal is for it to be interoperable with CMIS-compliant providers.
 
 Quick Example
 -------------
 This should give you an idea of how easy and natural it is to work with the API:
-  >>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/cmisatom', 'admin', 'admin')
+  >>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom', 'admin', 'admin')
   >>> repo = cmisClient.defaultRepository
   >>> rootFolder = repo.rootFolder
   >>> children = rootFolder.getChildren()
   >>> newFolder = rootFolder.createFolder('testDeleteFolder folder')
   >>> props = newFolder.properties
   >>> newFolder.delete()
-
-To-Do's
--------
-Miscellaneous
- * createDocumentFromSource
- * getProperties filter
- * getContentStream stream id
-
-Unfiling/multifiling support
- * createDocument without a parent folder (unfiled)
-
-  * The spec does not yet support this. Although the spec does say that a folder ID is optional, it does not specify which URL to post the unfiled document to.
-
-Policies
- * Policy object
- * createPolicy
- * applyPolicy
- * removePolicy
- * getAppliedPolicies
diff --git a/src/doc/src/bindings.rst b/src/doc/src/bindings.rst
new file mode 100644
index 0000000..072d8e2
--- /dev/null
+++ b/src/doc/src/bindings.rst
@@ -0,0 +1,59 @@
+..
+   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
+
+   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.
+
+Bindings
+========
+
+The CMIS specification supports multiple bindings. You can think of a binding as
+a communication protocol. The specification provides for three bindings:
+
+ * Atom Pub
+ * Browser (JSON)
+ * Web Services (SOAP)
+
+Although the spec supports three, cmislib supports only two of these bindings:
+Atom Pub and Browser.
+
+When instantiating a :class:`CmisClient`, if you do not specify a binding, cmislib
+will use the Atom Pub binding, by default.
+
+To use a different binding, such as the Browser binding, import it, then pass it
+to the CmisClient constructor, like this:
+
+    >>> from cmislib.browser.binding import BrowserBinding
+    >>> client = CmisClient('http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/browser', 'admin', 'admin', binding=BrowserBinding())
+
+Make sure you specify the appropriate service URL for the binding you've chosen,
+otherwise cmislib will be unable to parse the response appropriately.
+
+Each of the two bindings modules contain implementations of the classes defined
+in :mod:`cmislib.domain`. So, for example, if you execute a query that returns
+documents and you are using the Atom Pub binding, what you'll get back are instances
+of :class:`cmislib.atompub.AtomPubDocument` which implements :class:`cmislib.domain.Document`.
+
+The :mod:`cmislib.atompub` Module
+---------------------------------
+
+.. automodule:: cmislib.atompub
+   :members:
+
+The :mod:`cmislib.browser` Module
+---------------------------------
+
+.. automodule:: cmislib.browser
+   :members:
diff --git a/src/doc/src/code.rst b/src/doc/src/code.rst
index 04db5b6..dde85c1 100644
--- a/src/doc/src/code.rst
+++ b/src/doc/src/code.rst
@@ -22,21 +22,21 @@
 The :mod:`cmislib.model` Module
 -------------------------------
 
-The :mod:`cmislib.model` Module contains all the CMIS domain objects. The ones you will work with are listed as top level package elements. When working with the repository, the first thing you need to do is grab an instance of :class:`cmislib.CmisClient`, passing it the repository endpoint URL, username, and password.
+When working with the repository, the first thing you need to do is grab an instance of :class:`cmislib.CmisClient`, passing it the repository endpoint URL, username, and password.
 
-For example, in Alfresco 4 and higher, the repository endpoint is
-'http://localhost:8080/alfresco/cmisatom'. In earlier versions of
-Alfresco, the endpoint is
-'http://localhost:8080/alfresco/s/api/cmis'. In both cases, the
-default username and password are 'admin' and 'admin'.
+For example, in Alfresco 4.2 and higher, the repository endpoint for CMIS 1.1 and the Atom Pub binding is
+'http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom'. Earlier versions have different URLs.
+The default username and password are typically 'admin' and 'admin'.
 
->>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/s/cmis', 'admin', 'admin')
+So, to connect to an Alfresco server running on localhost, you would use:
+
+>>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom', 'admin', 'admin')
 
 From there you can get the default repository...
 
 >>> repo = cmisClient.defaultRepository
 
-or a specific repository if you know the repository ID.
+An Alfresco server has a single repository. Servers from other vendors may have multiple repositories. In those cases, you can get a specific repository if you know the repository ID.
 
 >>> repo = cmisClient.getRepository('83beb297-a6fa-4ac5-844b-98c871c0eea9')
 
@@ -45,6 +45,14 @@
 .. automodule:: cmislib.model
    :members:
 
+The :mod:`cmislib.domain` Module
+--------------------------------
+
+These are the generic domain objects that establish the interface to the cmislib API. Regardless of which actual binding you use (AtomPub or Browser), you will work with these objects.
+
+.. automodule:: cmislib.domain
+   :members:
+
 The :mod:`cmislib.net` Module
 -----------------------------
 
@@ -52,7 +60,7 @@
 
 .. automodule:: cmislib.net
    :members: RESTService
-   
+
 The :mod:`tests` Module
 -------------------------------
 
diff --git a/src/doc/src/codemisc.rst b/src/doc/src/codemisc.rst
new file mode 100644
index 0000000..78a272b
--- /dev/null
+++ b/src/doc/src/codemisc.rst
@@ -0,0 +1,46 @@
+..
+   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
+
+   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.
+
+Miscellaneous Code
+==================
+
+This page documents modules of lesser importance.
+
+The :mod:`cmislib.cmis_services` Module
+---------------------------------------
+
+.. automodule:: cmislib.cmis_services
+   :members:
+
+The :mod:`cmislib.exceptions` Module
+------------------------------------
+
+.. automodule:: cmislib.exceptions
+   :members:
+
+The :mod:`cmislib.messages` Module
+------------------------------------
+
+.. automodule:: cmislib.messages
+  :members:
+
+The :mod:`cmislib.util` Module
+------------------------------
+
+.. automodule:: cmislib.util
+   :members:
diff --git a/src/doc/src/conf.py b/src/doc/src/conf.py
index 1d28cdb..01794e4 100644
--- a/src/doc/src/conf.py
+++ b/src/doc/src/conf.py
@@ -59,7 +59,7 @@
 
 # General information about the project.
 project = u'Apache Chemistry cmislib'
-copyright = u'2013, Apache Software Foundation'
+copyright = u'2016, Apache Software Foundation'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -266,7 +266,7 @@
 epub_title = u'Apache Chemistry cmislib Documentation'
 epub_author = u'Jeff Potts'
 epub_publisher = u'Jeff Potts'
-epub_copyright = u'2013, Apache Software Foundation'
+epub_copyright = u'2016, Apache Software Foundation'
 
 # The language of the text. It defaults to the language option
 # or en if the language is not set.
diff --git a/src/doc/src/examples.rst b/src/doc/src/examples.rst
index fd6bb79..123880e 100644
--- a/src/doc/src/examples.rst
+++ b/src/doc/src/examples.rst
@@ -23,7 +23,7 @@
 ========
 There's nothing in cmislib that is specific to any particular vendor. Once you give it your CMIS provider's service URL and some credentials, it figures out where to go from there.
 
-Let's look at some examples using Alfresco's public CMIS repository.
+Let's look at some examples using a local install of Alfresco Community Edition.
 
 -----------------------
 Get a Repository object
@@ -34,33 +34,36 @@
 
     >>> from cmislib import CmisClient
 
- #. Point the CmisClient at the repository's service URL 
+ #. Point the CmisClient at the repository's service URL
 
-    >>> client = CmisClient('http://cmis.alfresco.com/cmisatom', 'admin', 'admin')
+    >>> client = CmisClient('http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom', 'admin', 'admin')
 
  #. Get the default repository for the service
 
     >>> repo = client.defaultRepository
     >>> repo.id
-    u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
+    u'-default-'
 
  #. Get the repository's properties. This for-loop spits out everything cmislib knows about the repo.
 
     >>> repo.name
-    u'Main Repository'
+    u''
     >>> info = repo.info
     >>> for k,v in info.items():
         ...     print "%s:%s" % (k,v)
         ...
-        cmisSpecificationTitle:Version 1.0 Committee Draft 04
-        cmisVersionSupported:1.0
+        cmisVersionSupported:1.1
+        principalAnonymous:guest
+        principalAnyone:GROUP_EVERYONE
         repositoryDescription:None
-        productVersion:3.2.0 (r2 2440)
-        rootFolderId:workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348
-        repositoryId:83beb297-a6fa-4ac5-844b-98c871c0eea9
-        repositoryName:Main Repository
+        changesOnType:cmis:folder
+        changesIncomplete:true
+        productVersion:5.2.0 (r133656-b12)
+        rootFolderId:000f9013-af35-430e-912f-67328f106279
+        repositoryId:-default-
+        repositoryName:None
         vendorName:Alfresco
-        productName:Alfresco Repository (Community)
+        productName:Alfresco Community
 
 -------------------
 Folders & Documents
@@ -73,7 +76,7 @@
     >>> root = repo.rootFolder
     >>> someFolder = root.createFolder('someFolder')
     >>> someFolder.id
-    u'workspace://SpacesStore/91f344ef-84e7-43d8-b379-959c0be7e8fc'
+    u'92133bfd-8b69-4e97-9af2-761a09f29e01'
 
  #. Then, you can create some content:
 
@@ -87,12 +90,12 @@
     ...     print '%s:%s' % (k,v)
     ...
     cmis:contentStreamMimeType:text/plain
-    cmis:creationDate:2009-12-18T10:59:26.667-06:00
+    cmis:creationDate:2016-12-29 14:53:47.430000-06:00
     cmis:baseTypeId:cmis:document
     cmis:isLatestMajorVersion:false
     cmis:isImmutable:false
     cmis:isMajorVersion:false
-    cmis:objectId:workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479
+    cmis:objectId:c4bc9d00-5bf0-404d-8f0a-a6260f6d21ae;1.0
 
 ----------------------------------
 Searching For & Retrieving Objects
@@ -102,11 +105,8 @@
  * You can run a CMIS query
  * You can ask the repository to give you one for a specific path or object ID
  * You can traverse the repository using a folder's children and/or descendants
- 
+
  #. Let's find the doc we just created with a full-text search.
-  
-    .. note::
-       Note that I'm currently seeing a problem with Alfresco in which the CMIS service returns one less result than what's really there):
 
     >>> results = repo.query("select * from cmis:document where contains('test')")
     >>> for result in results:
@@ -119,19 +119,19 @@
 
     >>> someDoc = repo.getObjectByPath('/someFolder/Test Document')
     >>> someDoc.id
-    u'workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479'
+    'c4bc9d00-5bf0-404d-8f0a-a6260f6d21ae;1.0'
 
  #. Or their object ID, like this:
- 
-    >>> someDoc = repo.getObject('workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479')
+
+    >>> someDoc = repo.getObject('c4bc9d00-5bf0-404d-8f0a-a6260f6d21ae;1.0')
     >>> someDoc.name
     u'Test Document'
- 
+
  #. Folder objects have getChildren() and getDescendants() methods that will return a list of :class:`CmisObject` objects:
- 
-	>>> children= someFolder.getChildren()
+
+	>>> children = someFolder.getChildren()
 	>>> for child in children:
 	...     print child.name
-	... 
+	...
 	Test Document
-	Test Document2  
+	Test Document2
diff --git a/src/doc/src/index.rst b/src/doc/src/index.rst
index 4656ebc..1605a9b 100644
--- a/src/doc/src/index.rst
+++ b/src/doc/src/index.rst
@@ -32,11 +32,12 @@
    about.rst
    install.rst
    examples.rst
+   bindings.rst
    code.rst
+   codemisc.rst
    devguide.rst
    tests.rst
    docs.rst
-   sample-data.rst
 
 Indices and tables
 ==================
@@ -44,4 +45,3 @@
 * :ref:`genindex`
 * :ref:`modindex`
 * :ref:`search`
-
diff --git a/src/doc/src/install.rst b/src/doc/src/install.rst
index d535d7b..9d44681 100644
--- a/src/doc/src/install.rst
+++ b/src/doc/src/install.rst
@@ -22,15 +22,15 @@
 Requirements
 ------------
 These requirements must be met:
- - Python 2.6.x
- - CMIS provider compliant with CMIS 1.0
+ - Python 2.6.x or Python 2.7.x. Python 3.x is not supported.
+ - CMIS provider compliant with CMIS 1.0 or CMIS 1.1
 
 Steps
 -----
  #. If you don't have `Python <http://www.python.org>`_ installed already, do so.
  #. If you don't have `setuptools <http://pypi.python.org/pypi/setuptools>`_ installed already, do so.
  #. Once setuptools is installed, type `easy_install cmislib`
- #. That's it! 
+ #. That's it!
 
 Once you do that, you should be able to fire up Python on the command-line and import cmislib successfully.
 
diff --git a/src/doc/src/sample-data.rst b/src/doc/src/sample-data.rst
deleted file mode 100644
index 6a345d7..0000000
--- a/src/doc/src/sample-data.rst
+++ /dev/null
@@ -1,24 +0,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
-
-     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.
-
-Sample Data
-===========
-
-The /path/to/cmislib/src/data directory contains some sample XML responses from a CMIS service. These are for sample and development purposes and can safely be ignored if you are an end-user of the library.
-
-In some cases there are two files for the same response. For example, 'types.xml' came from Alfresco while 'types.chemistry.xml' came from the simple Apache Chemistry test server.
diff --git a/src/doc/src/tests.rst b/src/doc/src/tests.rst
index da1431a..7a6f0c9 100644
--- a/src/doc/src/tests.rst
+++ b/src/doc/src/tests.rst
@@ -31,7 +31,7 @@
    python cmislibtest.py
 
 .. note::
-   http://cmis.alfresco.com is a freely-available, hosted CMIS service. If you want to use that for testing, the URL is http://cmis.alfresco.com/s/cmis and the username and password are admin/admin. See the wiki for other known CMIS test servers.
+   See the wiki for other known CMIS test servers.
 
 If everything goes well, you should see::
 
diff --git a/src/tests/__init__.py b/src/tests/__init__.py
index a716331..b1e560b 100644
--- a/src/tests/__init__.py
+++ b/src/tests/__init__.py
@@ -16,4 +16,4 @@
 #      specific language governing permissions and limitations
 #      under the License.
 #
-from cmislibtests import *
+from tests import *
