diff --git a/README.4bin b/README.4bin
index 8bbbf9d..e75e251 100644
--- a/README.4bin
+++ b/README.4bin
@@ -1,5 +1,5 @@
 
-                  Apache UIMA C++ (Unstructured Information Management Architecture) v2.4.0
+                  Apache UIMA C++ (Unstructured Information Management Architecture) v3.0.0
                   -------------------------------------------------------------------------
 
 Getting Started
@@ -13,20 +13,19 @@
 Supported Platforms
 --------------------
 
-The Apache UIMA C++ SDK has been built and tested in 32-bit mode
-on Linux systems with gcc version 3.4.6 and on Windows 
-using MSVC version 8. 64-bit builds have only been tested on Linux with gcc 4.3.2.
+The Apache UIMA C++ SDK has been built and tested in 64-bit mode
+on Linux systems with gcc version 4.8.5. MacOS and Windows versions are delayed
+pending user requests. 
 
-UIMACPP has dependencies on APR, ICU, Xerces-C and ActiveMQ-cpp
-libraries.  ActiveMQ-cpp has a dependency on apr-util. 
+UIMACPP has dependencies on APR, ICU, Xerces-C and optionally ActiveMQ-cpp
+libraries.  ActiveMQ-cpp has a dependency on APR-UTIL. 
 
-The UIMA C++ SDK has been built with the following versions of these dependencies:
-
-- APR 1.3.8
-- ICU 3.6
-- XERCES 2.8.0
-- ACTIVEMQ CPP 3.4.1
-- APR-UTIL 1.3.8
+This UIMA C++ SDK has been built with the following versions of these dependencies:
+- APR 1.6.5
+- ICU 50.2
+- XERCES 3.1.4
+- ACTIVEMQ CPP 3.9.3
+- APR-UTIL 1.6.1
 
 
 Environment Variables
@@ -36,8 +35,8 @@
 
     * UIMACPP_HOME should point to the uimacpp directory of your unpacked Apache UIMA C++
       distribution. UIMACPP_HOME is used when compiling & linking UIMA C++ components.
-    * Append $UIMACPP_HOME/bin to your PATH to pick up the runAECpp test driver
-      and shared libraries (Windows)
+    * Append $UIMACPP_HOME/bin to your PATH to pick up the runAECpp test driver and 
+      deployCppService utility.
     * Append $UIMACPP_HOME/lib to your LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (MacOSX)
       so that the necessary shared libraries can be found.
 
@@ -67,20 +66,34 @@
 
 The console should show that a Dave was found in some of the files in the data directory.
 
-To test interoperability with Java using the JNI, first verify that Apache UIMA Java is working from the current shell, as described in that package, and then use the runAE.sh utility (use runAE on Windows) from $UIMACPP_HOME/examples:
+To test interoperability with Java using the JNI, enable UIMA-AS by setting UIMA_HOME and 
+adding $UIMA_HOME/bin to PATH. Then use the runAE.sh utility (use runAE on Windows) to run 
+DaveDetector from the $UIMACPP_HOME/examples:
     * runAE.sh descriptors/DaveDetector.xml data
 
+To test interoperability with UIMA-AS, continuing with above configuration
+    * Start and ActiveMQ broker using the startBroker.sh command
+    * Build and deploy the uimacpp MeetingAnnotator component
+       * cd $UIMACPP_HOME/examples/tutorial/src and run "make -f MeetingAnnotator.mak"
+       * add this directory to C++ library path: "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD"
+       * deploy the service:
+         deployCppService $UIMACPP_HOME/examples/tutorial/descriptors/MeetingAnnotatorCPP.xml MeetingAnnotator
+       * deploy MeetingDetectorTAE service that uses this meeting annotator service:
+         UIMA_DATAPATH=$UIMA_HOME/examples/descriptors deployAsyncService.sh \
+         $UIMACPP_HOME/examples/tutorial/descriptors/Deploy_MeetingDetectorTAE_RemoteMeeting.xml
+    * Send work to the two services:
+         runRemoteAsyncAE.sh tcp://localhost:61616 MeetingDetectorTaeQueue \
+         -c $UIMA_HOME/examples/descriptors/collection_reader/FileSystemCollectionReader.xml 
+
+
 For more information about the C++ sample code see $UIMACPP_HOME/examples/readme.html.
 
 For more information about UIMA C++ $UIMACPP_HOME/RELEASE_NOTES.html.
 
 Notes on lib/base.mak
 ---------------------
-
 The annotator and application Make files include lib/base.mak.
 
-1) To build on 64-bit arch using the 32-bit UIMA C++ binary distribution:
-   Edit lib/base.mak and uncomment the line #FORCE_32=-m32
-2) On Mac OS X, may be necessary to modify base.mak  line
+On Mac OS X, may be necessary to modify the line in base.mak
    INCLUDES=-I$(UIMACPP_HOME)/include -I$(UIMACPP_HOME)/include/apr-1
-   to correctly specify path to the APR include directory.
+to correctly specify path to the APR include directory.
diff --git a/examples/tutorial/descriptors/Deploy_MeetingDetectorTAE_RemoteMeeting.xml b/examples/tutorial/descriptors/Deploy_MeetingDetectorTAE_RemoteMeeting.xml
new file mode 100644
index 0000000..36c3610
--- /dev/null
+++ b/examples/tutorial/descriptors/Deploy_MeetingDetectorTAE_RemoteMeeting.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+   <!--
+    ***************************************************************
+    * 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.
+    ***************************************************************
+   -->
+
+<analysisEngineDeploymentDescription xmlns="http://uima.apache.org/resourceSpecifier">
+  
+  <name>Meeting Detector TAE</name>
+  <description>Deploys Meeting Detector Aggregate AE that uses remotely deployed RoomNumberAnnotator.</description>
+  
+  <deployment protocol="jms" provider="activemq">
+    <casPool numberOfCASes="3"/>
+    <service>
+      <inputQueue endpoint="MeetingDetectorTaeQueue" brokerURL="${defaultBrokerURL}"/>
+      <topDescriptor>
+        <import name="tutorial.ex4.MeetingDetectorTAE"/>
+      </topDescriptor>
+      <analysisEngine>
+        <delegates>
+          <remoteAnalysisEngine key="Meeting">
+            <inputQueue endpoint="MeetingAnnotator" brokerURL="${defaultBrokerURL}"/>
+            <serializer method="xmi"/>
+          </remoteAnalysisEngine>
+        </delegates>
+      </analysisEngine>
+    </service>
+  </deployment>
+  
+</analysisEngineDeploymentDescription>
diff --git a/src/framework/uima/stltools.hpp b/src/framework/uima/stltools.hpp
index f3df09e..ffdce2e 100644
--- a/src/framework/uima/stltools.hpp
+++ b/src/framework/uima/stltools.hpp
@@ -51,34 +51,6 @@
 #include <set>
 #include <map>
 
-// #if defined( UIMA_NO_HASH_CONTAINERS_SUPPORTED ) || defined( UIMA_DONT_USE_HASH_CONTAINERS )
-// // we include the appropriate headers
-// #  include <set>
-// #  include <map>
-// #else
-// #  if defined(__GNUC__)
-// #define GCC_VERSION (__GNUC__ * 10000 \
-//                      + __GNUC_MINOR__ * 100 \
-//                      + __GNUC_PATCHLEVEL__)
-// #     if (__GNUC__ >= 3)
-// #        include <ext/hash_set>
-// #        include <ext/hash_map>
-// #        if (__GNUC_MINOR__ > 0)
-// #        endif
-// #     else   // gcc 2.9
-// #        include <hash_set>
-// #        include <hash_map>
-// #     endif
-// #  elif defined(__INTEL_COMPILER)
-// #     define _HAS_TRADITIONAL_STL 1
-// #     include <hash_set>
-// #     include <hash_map>
-// #  else
-// #     include <hashset>
-// #     include <hashmap>
-// #  endif
-// #endif
-
 namespace uima {
 
   /* ----------------------------------------------------------------------- */
